Вопрос к знатокам mod_rewrite!

W
На сайте с 22.07.2008
Offline
15
387

Нужен редирект внутренних страниц, а именно, с страницы вида site.ru/?page=2 на главную, т.е. на site.ru/

нашел пример, который то же самое делает с /index.php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

по такому же принципу переписал экранировав спец.символ "знак. вопроса"


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?page=2\ HTTP/
RewriteRule ^\?page=2$ http://site.ru/ [R=301,L]

Однако такой вариант не работает... видимо как то я неправильно спец.символ закрываю...

потому что вариант, если урл страницы был бы без "знака вопроса" работает... ниже рабочий код

редиректа с страницы site.ru/page=2 на site.ru


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /page=2\ HTTP/
RewriteRule ^page=2$ http://site.ru/ [R=301,L]

Т.е. фактически всё упирается в этот спец. символ... :gm:

Уважаемые, подскажите как поправить... Понятно, что цифра два это аргумент... Если не трудно, подскажите как это заменить регулярным выражением.

Заранее, спасибо!

webdozer добавил 07.10.2008 в 09:34

Люди добрые! Неужели никто не знает?

S0
На сайте с 07.05.2007
Offline
118
#1

webdozer, можно обойти вот так:


RewriteCond %{QUERY_STRING} ^.*page=.*$
RewriteRule ^.*$ http://site.ru/? [R=301,L]

В таком варианте будет переадресация с любых значений page на site.ru

[Удален]
#2

а точнее любого урла, где в get-запросе есть слово page, например /bla/bla/bla/?my=page Не айс.

ТС, а зачем у вас в конце строчки с RewriteCond бэкслеш стоит? И вообще как то там у вас сложно все. Знак вопроса заэкранировать - сомнительное удовольствие.

Я бы сделал как предложил предыдущий оратор


RewriteCond %{QUERY_STRING} ^.page=([0-9]+).*$
RewriteRule ^.$ / [R=301,L]
W
На сайте с 22.07.2008
Offline
15
#3

Sec0ndWind, neolord Спасибо! оба варианта работают.

neolord, спасибо за уточнение

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий