从非www重定向到www并强制使用SSL

时间:2014-03-07 11:34:01

标签: .htaccess redirect ssl

我想将所有http流量强制为https,并且还要强制使用www。

这是我到目前为止所做的:

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

当网址不包含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]

不知道这是否可以接受,但它有效

1 个答案:

答案 0 :(得分: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]