簡體   English   中英

how to redirect https://www.example.com to https://example.com with .htaccess?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM