我已經看到了 301 重定向非 www http 的幾個解決方案,即 http://domain-name 到https://www.domain-name但所有這些(根據我的經驗)都提供了 2 個重定向。
他們要么先從非 www 重定向到 www,然后再從 http 重定向到 https,要么在第 2 次重定向中首先重定向到第 1 次重定向。此類代碼的示例之一是:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
最好的解決方案是一個 301 重定向,它同時處理非 www 和 http 部分。誰能給我建議正確的代碼。
最好的 rgds,
齋
uj5u.com熱心網友回復:
我正在使用這段代碼,當我使用 httpstatus.io測驗http://example.com時,我只得到一個 301 重定向(到https://www.example.com )
# ensure www
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
第一條規則,如果你的地址不以www開頭,會被重定向到https www(一次重定向)
第二條規則僅適用于您的地址以 www 開頭(因為規則 1)并且不包含 https 的情況。(一個重定向)
實際上,您的域http://infocera.com獲得了 2 次重定向。
使用@MrWhite 關于您的域通過 Cloudflare 的建議:您應該在 Cloudflare -> Rules -> Page Rules 中轉到您的域并洗掉任何關于重定向的規則。
uj5u.com熱心網友回復:
我建議通過結合兩個條件將兩個規則合并為一個規則:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=301]
這很簡單,因此對于維護站點的任何人來說都很容易理解。
唯一的缺點是您必須在目標規則中指定一個固定的 http 主機。這非常好,除非您托管多個域并希望找到一個同時適用于所有域的解決方案。
不過,我通常會建議不要進行這種嘗試。這樣的通用規則與應用程式邏輯無關,人們應該總是更喜歡在實際的 http 服務器的主機配置中實作這樣的通用規則,而不是使用分布式組態檔(“.htaccess”)。這意味著您對單獨的域有單獨的配置,這再次允許將此類規則放入單獨的組態檔中,同時仍然只執行一個實際的重定向。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/534340.html
下一篇:顯示為目錄的URLGET引數
