我有多个域名我想做同样的事情。我们来一个域example.com
。
我一直想重定向到https://www.[mydomain]
。
在这种情况下:https://www.example.com
。
我需要重定向:
https://example.com
http://www.example.com
http://example.com
到
https://www.example.com
为此,我有这段代码:
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
https://example.com
和http://www.example.com
重定向直接发送到https://www.example.com
。
但是http://example.com
重定向转移到https://example.com
然后转到https://www.example.com
,而不是直接转到https://www.example.com
。有两种重定向。
为什么?我做错了什么?
答案 0 :(得分:0)
这里有2个选项。
对这两种重定向使用单一规则:
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
或者将规则的顺序更改为:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
无论您选择哪种方法,都要记得清除浏览器缓存或使用新的浏览器进行测试。