.htacces重定向到https:// www。;代替一次重定向

时间:2017-12-11 15:57:05

标签: .htaccess redirect mod-rewrite

我有多个域名我想做同样的事情。我们来一个域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.comhttp://www.example.com重定向直接发送到https://www.example.com

但是http://example.com重定向转移到https://example.com然后转到https://www.example.com,而不是直接转到https://www.example.com。有两种重定向。

为什么?我做错了什么?

1 个答案:

答案 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]

无论您选择哪种方法,都要记得清除浏览器缓存或使用新的浏览器进行测试。