2012-05-04 119 views
2

我在我的.htaccess中有以下 - 乾淨的網址聲明和https重定向都單獨工作,但放在一起導致連續重定向錯誤(此服務器重定向一種永遠不會完成的方式)。清理網址和https重定向衝突使用YII的.htaccess

這裏是我的.htacess:

RewriteEngine on 
# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.php 
RewriteRule . index.php 
# force to use https 
#RewriteCond %{HTTPS} !=on 
#RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

任何想法如何,我可以解決這個問題?

謝謝

+2

如果您翻轉Https/index.php規則,會發生什麼情況Https是第一個呢? – acorncom

回答

2

希望我沒有遲到,因爲我通過你同樣的問題,迷迷糊糊地就在一天前想通了衝突。

寫在你的.htaccess文件中的以下內容:

RewriteEngine On 

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

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

的第一條規則將自動重定向任何HTTP請求到HTTPS和(通過關鍵[L]標籤)停止其他替代它會弄亂頁面(具體而言,圖像和CSS樣式表將不會被提供)。

第二個是Yii建議的方法來檢查一個特定的URL是否對應一個真實的文件或目錄,如果不是,則將請求轉發到index.php(Web應用程序的引導文件)。 (然後,應用程序配置文件中的規則應該完成剩下的工作)。

+0

仔細檢查您的default-ssl.conf文件以確保AllowOverride設置爲全部。出於某種原因,一個規則工作正常,沒有設置AllowOverride(它甚至不在文件中),但是兩條規則太多了。 – coop