Помогите с mod_rewrite

Статус
В этой теме нельзя размещать новые ответы.

pr0zz

Постоялец
Регистрация
25 Ноя 2006
Сообщения
143
Реакции
50
Нужен редирект внутренних страниц, а именно, с страницы вида site.ru/?page=2 на главную, т.е. на site.ru/
нашел пример, который то же самое делает с /index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ Для просмотра ссылки Войди или Зарегистрируйся [R=301,L]
по такому же принципу переписал экранировав спец.символ "знак. вопроса"
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?page=2\ HTTP/
RewriteRule ^\?page=2$ Для просмотра ссылки Войди или Зарегистрируйся [R=301,L]
Однако такой вариант не работает... видимо как то я неправильно спец.символ закрываю...
потому что вариант, если урл страницы был бы без "знака вопроса" работает... ниже рабочий код
редиректа с страницы site.ru/page=2 на site.ru
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /page=2\ HTTP/
RewriteRule ^page=2$ Для просмотра ссылки Войди или Зарегистрируйся [R=301,L]
Т.е. фактически всё упирается в этот спец. символ... :confused:

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

Заранее, спасибо!
 
mod_rewrite здесь не нужен

Сколько лет уже пользую mod_rewrite, но у меня ни разу не возникала необходимость редиректить документ сам на себя. Поясню мысль...
Запрос вида http://site.ru/?page=2 приведёт к запуску скрипта, установленного по умолчанию директивой DirectoryIndex (чаще всего это index.php), с передачей ему в качестве QUERY_STRING строки "page=2".
Запрос httр://site.ru/ приведёт к запуску того же самого скрипта, только с пустой QUERY_STRING.
Таким образом топикстартер желает устроить редирект корневого документа сам на себя, что лично у меня вызывает резонный вопрос "а нафига?" Не проще ли в самом index.php найти и закомментировать код, обрабатывающий параметр page? Только не надо говорить, что индексный скрипт закодирован и подправить его невозможно.
 
все, что QUERY_STRING обрабатывается по этому принципу

RewriteCond %{QUERY_STRING} ^page=(.+)$
RewriteRule ^$ /index.php?page=$1 [R=301]

для твоего примера
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?page=2\ HTTP/
RewriteRule ^\?page=2$ Для просмотра ссылки Войди или Зарегистрируйся [R=301,L]
работает вот это
RewriteCond %{QUERY_STRING} ^page=(.+)$
RewriteRule ^$ /? [R=301]

/? [R=301]
"?" в конце строки подстановки означает, что не нужно подставлять исходную строку запроса
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху