我想将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次尝试中运行良好的代码。
答案 0 :(得分:2)
您可以使用此单一规则删除www
和http -> 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
将此规则作为您的第一条规则非常重要,并在测试前清除浏览器缓存。