2014-03-07 58 views
0

我想強制所有http通信到https,並且也始終強制www。重定向從非www到www並強制SSL

這是我到目前爲止有:

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

這似乎正常工作時的URL不包含WWW。因此http://mydomain.com正確重定向到https://www.mydomain.com

但是,當www部件存在時,它不能正確重定向到https。所以,www.mydomain.com不重定向到https://www.mydomain.com

編輯 我有這方面的工作有兩個重寫塊:

# Force ssl 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# redirect non-www to www 
RewriteCond %{HTTP_HOST} ^mydomain\.com 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 

不知道,如果這是可以接受與否,但它的工作原理

回答

0

在重寫過程中使用您的domain name而不是HTTP_HOST,因此,如果www存在或不存在,您可以使用1規則。你可以有兩個重寫規則,但只使用OR。我認爲你正在尋找的是這個。

# always redirect to www and/or https 
RewriteCond %{HTTP_HOST} ^mydomain\.com [NC,OR] 
RewriteCond %{HTTPS} !^on$ 
RewriteRule ^(.*) https://www.mydomain.com/$1 [R=301,L]