假設我有三個域:domain1.tld、domain2.tld 和 domain3.tld
所有請求都應重定向到 newdomain.tld/new,除了 domain1.tld 的根。但不幸的是,我的例外不起作用:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain1\.tld$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain1\.tld$
RewriteRule ^/$ https://newdomain.tld/new [L,R=301]
RewriteCond %{HTTP_HOST} !^domain1\.tld$ [OR]
RewriteCond %{HTTP_HOST} !^www\.domain1\.tld$
RewriteRule ^(.*)$ https://newdomain.tld/new [R=301,L]
uj5u.com熱心網友回復:
您的第一條規則似乎會執行您試圖阻止的特定重定向,如果它不是用于永遠不會匹配的RewriteRule 模式 ^/$,那么第一條規則實際上并沒有做任何事情。
第二條規則不會將任何請求重定向到domain1.tld,因此同樣,第二條規則也domain1.tld/不會重定向。
確保您沒有看到快取的回應。301(永久)重定向由瀏覽器永久快取,因此請始終先使用 302 進行測驗以避免潛在的快取問題。
幾個額外的假設:
newdomain.tld指向不同的服務器。您不需要從頁面提供任何靜態資源(CSS、JS、影像等)
domain1.tld/- 因為這些將被重定向到newdomain.tld. 該例外實際上僅適用于對檔案根目錄的請求。
試試這樣:
RewriteEngine On
# Exception for "domain1.tld/"
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.tld [NC]
RewriteRule ^$ - [L]
# Everything else redirects to "newdomain.tld/new"
RewriteRule ^ https://newdomain.tld/new [QSD,R=301,L]
請注意,RewriteRule 模式(第一個引數)與 URL 路徑匹配,減去斜杠前綴。IE。^$(一個空的URL 路徑)匹配根。(您只能^/$在服務器背景關系中使用。)
注意:您需要在測驗之前清除瀏覽器快取,并首先使用 302 進行測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459222.html
