Этот фрагмент 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]
Из-за строки запроса «p = ([0-9] +) & preview = true» я предполагаю, что ваша потребность в перенаправлении связана с тем, что администратор wordpress находится в поддомене, а веб-сайт - в вашем основном домене.
Из-за этого вы не можете предварительно просмотреть черновики.
Я придумал более широкое решение, которое также работает с настраиваемыми типами сообщений и плагинами, которые добавляют параметры:
RewriteCond %{HTTP_HOST} =myhost.com [NC]
RewriteCond %{QUERY_STRING} (preview=true)
RewriteRule ^$ http://alt.myhost.com/?%{QUERY_STRING} [R=301,L]
На простом английском языке, когда в запросе встречается «preview = true», происходит перенаправление на поддомен alt и сохраняется полный запрос.