使用codeigniter时,我遇到了一些困难。这是关于URL中的index.php文件。
CodeIgniter使用index.php
为其所有页面提供服务。所以,我们的网址应如下所示:
http://www.example.com/codeigniter/index.php/something
我想通过编辑index.php
文件并创建.htaccess文件来从网址中删除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
不能运行。我怎么能这样做?
答案 0 :(得分:1)
您可以尝试在.htaccess
文件中添加以下内容
RewriteCond %{THE_REQUEST} codeigniter\/index\.php
RewriteRule codeigniter\/index\.php -[F]
基本上,如果请求包含codeigniter / index.php,则此规则会返回一个禁止的响应
答案 1 :(得分:1)
尝试这个
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
将代码放在根文件夹htaccess中。如果您遇到任何问题请告诉我
答案 2 :(得分:0)
将此规则添加到您已有的规则之上:
RewriteCond %{THE_REQUEST} \ /codeigniter/index\.php([^\?\ ]*)
RewriteRule ^ /codeignighter/%1 [L,R=301]
它会将包含index.php
的请求重定向到没有它的网址。
答案 3 :(得分: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]