2012-09-28 73 views
0

我遇到了問題,我的mod_rewrite到SSL,同時保持我的其他規則。我需要所有頁面都在SSL上,但通過添加規則,它創建了一個重定向循環。mod_rewrite與其他規則的SSL激活

這是我到目前爲止有:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule (.*) https://www.domain.com/ [R=301] 

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

RewriteBase/

# Sign up 
RewriteRule ^sign-up/$ /register.php [NC] 

在哪裏可以我來錯了怎麼回事?我試過改變這些命令的順序,但沒有運氣。

乾杯, RJ

回答

0

我想通了這一點。事實證明,這是由於Web服務器位於負載平衡器後面。

所以,過了好一會兒找到,但如果其他人有負載平衡器後面的多臺服務器類似的問題,這裏是你需要的東西:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

感謝,RJ

1

您需要用[L]標誌退出重寫迭代:

RewriteEngine on 

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

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

RewriteBase/

# Sign up 
RewriteRule ^sign-up/$ /register.php [NC] 
+0

謝謝,好回答。不幸的是它沒有解決它,仍然存在一個循環。 – TMPilot