Перенаправление .htaccess не работает для строк запроса - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь перенаправить olddomain.com со всеми его подстраницами (и на них могут быть строки запроса в URL) на конкретную страницу в новом домене:

newdomain.com / target-page /

В настоящее время я использую этот код в .htaccess olddomain.com:

RewriteEngine On
rewritecond %{http_host} ^olddomain.com
rewriteRule ^(.*) https://www.newdomain.com/target-page/ [R=301,L]
ErrorDocument 404 https://www.newdomain.com/target-page/

Работает нормально, за исключением некоторых случаев, когда в URL есть строка запроса.

Например:

http://www.olddomain.com/home.php?pd=index

Перенаправляет на:

https://www.newdomain.com/target-page/?pd=index

, и мне нужно, чтобы оно было просто:

https://www.newdomain.com/target-page/

Что такоеинтересно, такая страница:

http://www.olddomain.com/?page_id=503

Перенаправляет нормально на:

https://www.newdomain.com/target-page/

Как мне убедиться, что все на olddomain.com перенаправлено на newdomain.com/target-page/включая строки запроса и т. д .?

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2019

Вы можете использовать правило перезаписи с условием совпадения строки запроса, например: Это перенаправит ВСЕ запросы с www.olddomain.com на newdomain.com

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

Код был взят у официального mod_rewrite manual

ОБНОВЛЕНИЕ: Это перенаправит ваш конкретный URL на другой домен:

RewriteCond %{HTTP_HOST} =olddomain.com [NC]
RewriteCond %{QUERY_STRING} ^(p=1&preview=true)
RewriteRule ^$ http://newdomaincom/?%1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...