Что прописать в htaccess для ЧПУ

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем avgaz, 16 апр 2013.

  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Делаю ЧПУ для столкнулся с такой проблемой
    Имеется вот такое содержание в htaccess
    Код:
    RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?md=content&op=content_show&ide=$2 [L]
    RewriteRule ^(.*).html(/?)+$ index.php?md=content&op=content_show&ide=$1 [L]
    RewriteRule ^([^.]+)/?$ index.php?md=content&op=show_category&idc=$1 [L]
    Собственно эти правила открываю урлы контента к примеру по таким адреса test.ru/test.html или test.ru/test1/ и так же test.ru/test1/test.html и тд в общем это все работает как нужно, но вот столкнулся с такой проблемой что реальные директории которые присутвуют на сервере тоже обрабатывается этими правилами к примеру физически на существует директория test2 на если её открыть test.ru/test2/ то она обрабатывается правилом и уже не открывается. Как избежать этого, что бы существующие директории не обрабатывались правилами?
     
  2. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    Код:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
     
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Не срабатывает, если вводить имя файла например test.ru/test2/index.php то открывает его, а если вводить test.ru/test2/ то срабатывают правила из первого поста
     
  4. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    Вы добавили это условие для всех правил ? хотя наверное в Вашем случае лучше будет наоборот и добавить только одно правило

    Код:
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    
     
    avgaz нравится это.