重定向从非www到www并强制SSL
问题描述:
我想强制所有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]
不知道,如果这是可以接受与否,但它的工作原理
答
在重写过程中使用您的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]