2012-12-25 122 views
2

嘿,我使用codeigniter和添加重寫規則從url中刪除index.php工作正常。htaccess重定向到https與index.php

但是,我已經添加了一個規則來重定向所有http請求到https,但是當它做到它重定向與index.php。

含義,如果我進入這個網址:domain.com/somecoolcontroler

它將我重定向到:https://domain.com/index.php/somecoolcontroler

但事後導航,當談到恢復正常的網址沒有,所以我想這個問題是在重定向規則,這是我把它放在htaccess中:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

我該如何解決這個問題?

回答

4

您需要將您的重定向規則您的路由規則。即使你有L標誌,重寫引擎也會循環,它會在第二次繞過你的路由規則並且重定向規則,除了這次,URI已經被重寫了。

如果重寫規則是第一個,它將在應用路由規則之前重定向瀏覽器。然後,當發出重定向請求時,會應用路由規則。你還需要一個L標誌。

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

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

謝謝喬恩,你說得對,這解決了我的問題。 –