我正在嘗試創建重寫規則來處理一些特定的網站重定向:
我希望域1 .ca/ folder1 /xyz 轉到域2 .ca/xyz 和域1 .ca/ folder2 /xyz 轉到域3 .ca/xyz
現在我的嘗試如下:
RewriteCond %{HTTP_HOST} ^domain1.ca$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain1.ca$
RewriteRule ^(\/folder1\/)(.*)$ "https://domain2.ca/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^domain1.ca$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain1.ca$
RewriteRule ^(\/folder2\/)(.*)$ "https://domain3.ca/$1" [R=301,L]
任何幫助將不勝感激:) Thx。
uj5u.com熱心網友回復:
您現有的規則有幾個問題:
在模式
.htaccess匹配的 URL-path中不以斜杠開頭。因此,URL 路徑以 開頭,而不是.RewriteRulefolder1/xyz/folder1/xyz您在第一個帶括號的子模式中不必要地捕獲“folder1”并在替換字串中使用它(即。
$1)。您應該使用$2,或者不捕獲第一個路徑段。
指令也可以稍微整理一下(例如,不需要在正則運算式中反斜杠轉義斜杠,條件可以組合)。
請嘗試以下操作:
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ca [NC]
RewriteRule ^folder1/(.*) https://domain2.ca/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ca [NC]
RewriteRule ^folder2/(.*) https://domain3.ca/$1 [R=301,L]
補充說明:
- 結束字串錨(
$)以下(.*)$的RewriteRule圖案不需要因為正則運算式是通過默認的貪婪。 - 如果引數包含空格,您只需要用雙引號將引數括起來。
- 我
$從CondPattern的末尾洗掉了字串結尾錨點 ( )以匹配以點結尾的完全限定域名。 - 我
NC在條件中添加了標志。從技術上講,某些機器人可以發送混合/大寫Host標題。
首先使用 302(臨時)重定向進行測驗以避免潛在的快取問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327294.html
上一篇:Apachemod_secure,禁用包含“1---”的cookie規則
下一篇:URL僅重寫主請求并忽略子檔案夾
