Dot-Htaccess

如何將帶有查詢字元串的 URL 重定向到另一個主機?

  • November 28, 2011

這個 htaccess 片段應該重定向

myhost.com/?p=1&preview=true

alt.myhost.com/?p=1&preview=true

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^myhost.com$ [NC]
RewriteRule ^/\?p=([0-9]+)&preview=true$ http://alt.myhost.com/?p=$1&preview=true [NC,R=301,L]

但由於某種原因,我無法逃脫 / 和 ? URL 的一部分。不知道為什麼這不起作用…

我試過逃跑?

\\? \? [?]

我試過逃避 /

\\/ \/ [/]

這些似乎都不起作用……

幫助!

這會將來自 myhost.com 的所有請求重定向到 alt.myhost.com

RewriteCond %{HTTP_HOST} !^alt\.myhost\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://alt.myhost.com/$1 [L,R,NE]

程式碼取自官方mod_rewrite 手冊

如果由於某種原因未保留查詢字元串,請將最後一行替換為

RewriteRule ^/?(.*) http://alt.myhost.com/$1 [L,R,NE,QSA]

**更新:**這會將您的特定 URL 重定向到另一個域:

RewriteCond %{HTTP_HOST} =myhost.com [NC]
RewriteCond %{QUERY_STRING} ^(p=1&preview=true)
RewriteRule ^$ http://alt.myhost.com/?%1 [R=301,L]

引用自:https://serverfault.com/questions/279996