Проблема с RewriteRule

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Fl1N, 17 июн 2010.

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

    Fl1N Постоялец

    Регистр.:
    14 мар 2009
    Сообщения:
    128
    Симпатии:
    8
    Имеется файл .htaccess такого содержания:
    Код:
    RewriteEngine On
    
    Options +FollowSymlinks
    RewriteBase /
    
    RewriteRule ^([^.]+)/([^.]+).html+$ /?do=$1&section=$2 [L]
    
    RewriteRule ^([^.]+)/([^.]+)/([0-9]{1}).html
    +$ /?do=$1&action=$2&page=$3 [L]
    
    RewriteRule ^([^.]+)/([^.]+).html+$ /?do=$1&action=$2 [L]
    
    Но вот эта:
    Код:
    RewriteRule ^([^.]+)/([^.]+).html+$ /?do=$1&section=$2 [L]
    и эта:

    Код:
    RewriteRule ^([^.]+)/([^.]+)/([0-9]{1}).html
    +$ /?do=$1&action=$2&page=$3 [L]
    строки конфликтуют, т.е выполняется только то правило, которое стоит выше. Что нужно исправить для того, чтобы выполнялись оба правила, вне зависимости от положения?

    Если вопрос сильно тупой, прошу прощения.
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    лучше как первое правило ставить которое имеет больше условий, поменять первое со вторым тогда
    Код:
    RewriteRule ^([^.]+)/([^.]+)/([0-9]{1}).html+$ ?do=$1&action=$2&page=$3 [L]
    RewriteRule ^([^.]+)/([^.]+).html$ ?do=$1&section=$2 [L]
    
    ещё
    .html+$
    не экранированная точка это любой символ значит пройдёт и Zhtml и .html
    если нужна только точка то надо экранировать \.

    а вот html+$ это один и более l пройдёт
    html и htmll и htmlll и т.д.

    вобщем если таких ссылок нет тогда не мешает.

    интересно про ([^.]+) символ исключая любой символ, выходит почти аналогично и короче (.+) любой символ
     
Статус темы:
Закрыта.