![](/img/trans.png)
[英]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.