Помогите с mod_rewrite

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем pr0zz, 7 окт 2008.

Статус темы:
Закрыта.
  1. pr0zz

    pr0zz Постоялец

    Регистр.:
    25 ноя 2006
    Сообщения:
    142
    Симпатии:
    46
    Нужен редирект внутренних страниц, а именно, с страницы вида site.ru/?page=2 на главную, т.е. на site.ru/
    нашел пример, который то же самое делает с /index.php
    по такому же принципу переписал экранировав спец.символ "знак. вопроса"
    Однако такой вариант не работает... видимо как то я неправильно спец.символ закрываю...
    потому что вариант, если урл страницы был бы без "знака вопроса" работает... ниже рабочий код
    редиректа с страницы site.ru/page=2 на site.ru
    Т.е. фактически всё упирается в этот спец. символ... :confused:

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

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

    Avtandil Создатель

    Регистр.:
    30 сен 2006
    Сообщения:
    30
    Симпатии:
    24
    mod_rewrite здесь не нужен

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

    serg_g Создатель

    Регистр.:
    31 окт 2008
    Сообщения:
    35
    Симпатии:
    9
    все, что QUERY_STRING обрабатывается по этому принципу

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

    для твоего примера
    работает вот это
    RewriteCond %{QUERY_STRING} ^page=(.+)$
    RewriteRule ^$ /? [R=301]

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