2012-08-01 58 views
6

我試圖通過https運行我的整個站點並強制www。使用htaccess強制SSL和WWW

我見過一些解決方案,它們提供強制的www或https,甚至有幾個組合,但我似乎無法得到任何工作。我通常會發現自己處於重定向循環中。

我得到的最接近是下面的,但它不夠緊密尚未:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

我需要https://www.example.com/

http://example.com SUCCESS
https://example.com SUCCESS
http://www.example.com FAIL
https://www.example.com SUCCESS,雖然沒有實際重定向。

感謝

更新
下面的代碼成功執行我需要重定向:

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

RewriteCond %{ENV:HTTPS} on [NC] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
+0

如果你已經找到了一個解決方案,您的更新建議,請自行張貼作爲一個答案,並接受它。有助於保持網站的問答性質。 – bPratik 2012-08-03 18:43:44

回答

5

強制HTTPS和www被做其他提供的答案的組合。

這似乎工作:

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

RewriteCond %{ENV:HTTPS} on [NC] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
0

嘗試添加[OR]標誌的條件。你真的想要麼沒有WWW 過https:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
+0

這確實有效,但我看到了重定向循環消息 - 不是網站,所以得到的URL是我想要的。 – 2012-08-01 22:13:59

+0

@JasonVarga不知道爲什麼這會導致重定向循環,當原始規則沒有 – 2012-08-01 23:53:35

1

試試這個情況相反,它應強制該網站爲您網域的SSL

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
+0

這迫使SSL,但不強制WWW。我已經將您的規則與另一個規則結合使用,以成功重定向我想要的方式。謝謝。 – 2012-08-03 18:35:00