Kredov long

htaccess RewriteRule

Тема в разделе "PHP", создана пользователем saxum2010, 25 дек 2013.

  1. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    Здравствуйте подскажите пожалуйста как сделать для .htaccess правило
    нужно из страниц
    /test/?p=123 вести на /?p=123

    но а саму страницу
    /test/ вести на /new2/

    Первую часть правило
    RewriteRule ^test/ /$1 [R=301,L]
    выполняет , а вот вторую часть выполнить не получается

    пробовал
    RewriteRule test/$ /new2/ [R=301,L]
    или
    RewriteRule ^test/$ /new2/ [R=301,L]
    или
    RewriteRule ^test\/$ /new2/ [R=301,L]
    не срабатывает

    Заранее благодарю за ваши ответы
     
  2. miketomlin

    miketomlin

    Регистрация:
    17 дек 2013
    Сообщения:
    4
    Симпатии:
    1
    Зачем вам редирект?

    Проблема в том, что /test/?p=123 и /test/ дадут один и тот же результат при сравнении, т.к. строка запроса не учитывается в правиле при сравнении. Если вам нужно применять разные правила рерайта в зависимости от наличия или отсутствия строки запроса, то попробуйте этот вариант:
    Код:
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^test/(.*) new2/$1 [NC]
    
    RewriteCond %{QUERY_STRING} !^$
    RewriteRule ^test/(.*) $1 [NC]
    
     
    saxum2010 нравится это.