0

在使用 codeigniter 时,我遇到了一些困难。那是关于 URL 中的 index.php 文件。

CodeIgniter 使用index.php. 因此,我们的 url 应该如下所示:

http://www.example.com/codeigniter/index.php/something

我想通过编辑文件并创建一个 .htaccess 文件index.php从 URL中删除。config.php从更改配置后

$config['index_page'] = 'index.php';

$config['index_page'] = '';

我可以在没有 index.php 的情况下运行我的项目,就像这样:

http://www.example.com/codeigniter/something

所以现在,该链接正在工作 - 但它也与index.php片段一起工作。我还可以看到带有http://www.example.com/codeigniter/index.php/something地址的组件。

我的 .htaccess 文件是:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

现在,我想让我的网站只在没有index.php链接的情况下可用。我不希望该站点与链接中的 index.php 文件一起运行。我想http://www.example.com/codeigniter/something完美地跑而http://www.example.com/codeigniter/index.php/something不是跑。我怎样才能做到这一点?

4

4 回答 4

1

您可以尝试在.htaccess文件中添加以下内容

RewriteCond %{THE_REQUEST} codeigniter\/index\.php
RewriteRule codeigniter\/index\.php -[F]

基本上,如果请求包含 codeigniter/index.php,则此规则告诉返回禁止响应

于 2013-10-05T14:58:38.030 回答
1

试试这个

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

将代码放在您的根文件夹 htaccess 中。如果您遇到任何问题,请告诉我

于 2013-10-06T11:01:14.123 回答
0

将此规则添加到您已有的规则之上:

RewriteCond %{THE_REQUEST} \ /codeigniter/index\.php([^\?\ ]*)
RewriteRule ^ /codeignighter/%1 [L,R=301]

它会将其中包含的请求重定向index.php到没有它的 URL。

于 2013-10-06T01:41:32.830 回答
0

你应该添加一个?在 index.php 之后,因此它适用于所有主机。这是我的 htaccess

RewriteEngine On
#RewriteBase /   maybe you don't need it, depends on the hosting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt|humans\.txt|license\.txt|sitemap\.xml|assets)
RewriteRule ^(.*)$ index.php?/$1 [L]

于 2015-06-01T08:15:55.907 回答