2014-01-23 169 views
1

下面是我的.htaccess文件。URL重定向導致循環

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [L] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteRule ^axiom/?$ /axiom/publish.htm [L] 

這導致重定向循環。如果我註釋掉

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

頁面將load.I'm不知道在哪裏我的錯誤,但我猜想它在這裏的某個地方。

+0

什麼是重寫規則^的'目的$ HTTPS(*): //%{HTTP_HOST}%{REQUEST_URI} [L,R = 301]'規則? – anubhava

+0

將http請求重定向到https。 –

回答

1

此規則重定向你要訪問的URL相同 -

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

考慮您正在訪問http://www.example.com/test/a.html。該重寫規則匹配測試/ a.html和

REQUIEST_URI = test/a.html 
HTTP_HOST = www.exmpale.com 

所以,你重定向到https://www.example.com/test/a.html

那麼你匹配相同條件再次被重定向到同一頁面!

,如果你正試圖從HTTP重定向到HTTPS,那麼你需要添加另一個條件,以檢查它是否來自HTTP或HTTPS

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [L] 
RewriteRule ^axiom/?$ /axiom/publish.htm [L] 

RewriteCond %{HTTPS} ^off$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

這樣做了,現在我完全理解發生了什麼。感謝您的指導! –