2016-10-28 2 views
0

Я перенаправляю большинство страниц, включая индекс, from firstdomain.com на seconddomain.com.htaccess - Перенаправить, если только какой-либо запрос

Для перенаправления страниц, я использую:

Redirect 301 /faq http://www.seconddomain.com/faq 
Redirect 301 /contact http://www.seconddomain.com/contact 

Перенаправление индекс, я использую:

RewriteRule ^$ http://www.seconddomain.com/ [R=301,L] 

Теперь проблема в том, что я хочу http://www.firstdomain.com/?query=9328 остаться. С вышеуказанным кодом он перенаправляется на http://www.seconddomain.com/?query=9328

Мой вопрос: Как перенаправить индекс, если он не содержит запрос?

ответ

0

Это работает:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^$ http://www.seconddomain.com/ [R=301,L] 

Я понятия не имею, если это правильный или лучший способ, но он делает перенаправление индекса, если это не сопровождается строкой запроса.

+0

За исключением того, что он не отвечает на ваш первоначальный вопрос; Это перенаправляется только в том случае, если параметры запроса полностью опущены, а это не то, о чем вы просили. – TerryE

0

префикс RewriteRule с RewriteCond с использованием отрицательного предпросмотра на строке запроса, например

RewriteCond %{QUERY_STRING} (?!query=9328) 
RewriteRule ^$ http://www.seconddomain.com/ [R=301,L] 

Это будет пропускать перенаправление, если строка запроса содержит шаблон. Если у вас есть допустимые параметры запроса, такие как otherquery и т. Д., Тогда вы можете захотеть привязать шаблон к \b букрандам.

+0

Спасибо! Пара вопросов: Когда я тестирую этот код в онлайн-тесте htaccess, htaccess.mwl.be выводится 'seconddomain.com/? Query = 9328'. Кроме того, я не хочу, чтобы меня перенаправляли, если в URL есть ЛЮБОЙ запрос. –

Смежные вопросы