我想将所有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]
不知道这是否可以接受,但它有效
答案 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]