我相信最佳答案成功地将非 www 重定向到 www (例如:mysite.com -> www.mysite.com),但没有考虑通配符子域,这会导致:
random.mysite.com -> www.random.mysite.com
这是一个有/没有HTTPS的解决方案
HTTP
RewriteEngine On
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301]
HTTP/HTTPS
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]
*注意:我没有测试过 https,因为我目前没有要测试的证书,但是如果有人可以验证或优化我所拥有的,那就太棒了。