2012-08-06 64 views
0

我使用以下htaccess規則,這是建議遍佈互聯網去除codeigniter網址index.php。還有一些我在它上面添加的重定向規則。CodeIgniter index.php清除htaccess導致錯誤重定向

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 /公共/的jquery.js 作爲旁註即時通訊使用鹼標籤資產重定向到/公/

奇怪的是,我無法找到其中第二重定向發生 我測試整個網站和JavaScript & css文件加載正確

我通過讓我的控制器忽略這些請求來處理這個重定向,但不久前 發生了一個奇怪的錯誤。這是我在這裏問: https://stackoverflow.com/questions/11775849/htaccess-didnt-work-until-renaming-and-then-renaming-back

我的猜測是,即使我忽略misredirected要求,託管公司接收他們,也許它是由一個維護造成了一些麻煩他們而導致的問題,我在鏈接的問題共享託管公司。

無論如何,問題是: 我如何使htaccess規則只重定向請求,最終沒有文件擴展名?

回答

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] 
+0

測試:) 謝謝,我會盡快接受答案:) – 2012-08-06 13:21:56