.htaccess 从非www重定向到www并强制SSL

.htaccess 从非www重定向到www并强制SSL,.htaccess,redirect,ssl,.htaccess,Redirect,Ssl,我想强制所有的http流量使用https,并且总是强制使用www 这就是我到目前为止所做的: RewriteCond %{SERVER_PORT} 80 RewriteCond %{HTTP_HOST} ^mydomain\.com RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 当url不包含www时,这似乎正常工作。因此正确重定向到 但是,当存在www部分时,它无法正确重定向到https。因此,www.mydomain.c

我想强制所有的http流量使用https,并且总是强制使用www

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

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^mydomain\.com
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
当url不包含www时,这似乎正常工作。因此正确重定向到

但是,当存在www部分时,它无法正确重定向到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]

不知道这是否可以接受,但它可以工作

在重写规则中使用您的
域名
,而不是
HTTP\u主机
,这样无论是否有www,您都可以使用1条规则。您可以有两个重写规则,但只需使用
。我想你在找的是这个

# 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]