[英]htaccess redirect https://www. (https://www.example.com) to non www (https://example.com)
[英]how to redirect https://www.example.com to https://example.com with .htaccess?
www.example.com将重定向到https://example.com 。
https://www.example.com不会重定向到https://example.Z4D236D9A2D102C5ZFE6AD1 。 这个怎么做?
当前规则如下所示:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^[a-z0-9-]+\. [NC]
RewriteCond %{HTTP_HOST} ^(?:[a-z0-9-]+\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP_HOST} ^[a-z0-9-]+\.[NC]
RewriteCond %{HTTP_HOST} ^(?:[a-z0-9-]+\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{HTTP_HOST} ^[a-z0-9-]+\.[NC]
您在 flags 参数之前缺少一个空格,因此它成为CondPattern的一部分并且永远不会匹配,因此第二个重定向块(来自 HTTPS)永远不会发生。
但是,这仍然应该被第一个规则块捕获,但是......这看起来会创建一个小的重定向循环,因为正则表达式^[a-z0-9-]+\.
匹配www.
,但它也会匹配example.
(在第一次重定向之后)。 可能重定向到https://com/foo
??
你不需要两个规则。
请尝试以下操作:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
在测试之前,您可能需要清除浏览器缓存。 (使用 302 进行测试以避免缓存问题。)
但是这样做有什么好处呢?
在对规范主机名进行硬编码时……这取决于您是否有其他子域或指向同一帐户的域。
硬编码解决方案更简单,更不容易出错并且通常更可靠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.