CodeIgniter index.php删除htaccess导致错误重定向

时间:2012-08-06 13:12:01

标签: apache .htaccess codeigniter

我正在使用以下htaccess规则,该规则在互联网上提出,用于删除codeigniter网址中的index.php。并且我在其上面添加了一些重定向规则。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L] 

问题是: 我收到一些奇怪的http请求,我认为这是由上面的htaccess规则引起的。 以下是其中一些:

https://www.sitename.com/index.php/favicon.ico 应该是.com / favicon.ico

https://www.sitename.com/index.php/scripts/jquery.js 应该是.com / public / jquery.js 作为附注我使用基本标记将资源重定向到/ public /

奇怪的是我无法找到第二次重定向发生的地方 我测试了整个网站和javascript& css文件正确加载

我通过让我的控制器暂时忽略这些请求来处理这种重定向 发生了一个奇怪的错误我问这里: https://stackoverflow.com/questions/11775849/htaccess-didnt-work-until-renaming-and-then-renaming-back

我的猜测是,即使我忽略了错误的请求,托管公司收到了它们,也许这给他们造成了一些麻烦,导致了我在托管公司维护的链接问题中分享的问题。

无论如何,问题是: 如何让htaccess规则仅重定向最后没有文件扩展名的请求?

1 个答案:

答案 0 :(得分:1)

您在REQUEST_FILENAME行之前错过了一行:

 RewriteCond $1 !^(index\.php|assets|something|fav\.ico|robots\.txt)

您可以根据自己的需要进行修改。我在assets文件夹中有我的JS / CSS等,所以它不受重写的影响。

所以完整.htaccess将如下所示:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond $1 !^(index\.php|assets|something|fav\.ico|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]