http到https,www到非www和尊重网址

时间:2016-10-11 08:31:48

标签: .htaccess https no-www

我想将http重定向到https,将www重定向到非www。

例:

http://example.com/my/url
http://www.example.com/my/url
https://example.com/my/url
https://www.example.com/my/url

结果

https://example.com/my/url
https://example.com/my/url
https://example.com/my/url
https://example.com/my/url

我当前的htaccess文件:

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

问题:

重定向到https://example.com/index.php

我希望它尊重网址https://example.com/my/url

我发现了很多问题,但我还没有找到完整的解决方案。实际上,上面的htaccess代码是唯一一个在10次尝试中运行良好的代码。

1 个答案:

答案 0 :(得分:2)

您可以使用此单一规则删除wwwhttp -> https

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]

# rest of rules go here ....

如果您遇到重定向过多的问题,请尝试将第二行替换为:
    RewriteCond %{ENV:HTTPS} !on

将此规则作为您的第一条规则非常重要,并在测试前清除浏览器缓存。