这htaccess片段应该redirect
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的所有请求redirect到alt.myhost.com
RewriteCond %{HTTP_HOST} !^alt\.myhost\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/?(.*) http://alt.myhost.com/$1 [L,R,NE]
代码来自官方的mod_rewrite手册
如果由于某种原因查询string没有得到保存,请将最后一行replace为
RewriteRule ^/?(.*) http://alt.myhost.com/$1 [L,R,NE,QSA]
更新:这将redirect您的特定url到另一个域:
RewriteCond %{HTTP_HOST} =myhost.com [NC] RewriteCond %{QUERY_STRING} ^(p=1&preview=true) RewriteRule ^$ http://alt.myhost.com/?%1 [R=301,L]
由于查询string“p =([0-9] +)&preview = true”我想你需要redirect是由于wordpresspipe理员在一个子域和你的主域上的网站。
因此,您无法预览草稿。
我想出了一个更广泛的解决scheme,它也适用于添加参数的自定义posttypes和插件:
RewriteCond %{HTTP_HOST} =myhost.com [NC] RewriteCond %{QUERY_STRING} (preview=true) RewriteRule ^$ http://alt.myhost.com/?%{QUERY_STRING} [R=301,L]
用普通英语在查询中发现“预览=真”时,redirect发生在alt子域中,并且保持完整的查询。