@mrgnv

Как составить Rewrite rule?

Имеем:

RewriteRule ^([^/]*)/?$ index.php?module=category&url=$1 [L,QSA] #категория
RewriteRule ^([^/]*)/([^/]*)/?$ index.php?module=page&url=$1 [L,QSA] #категория/страница-категории
RewriteRule ^/?$ index.php?module=page&url=main [L,QSA] #главная страница


текущая вложенности URLов:
мойсайт.рф/
мойсайт.рф/категория
мойсайт.рф/категория/страница-категории

Пример кода выше - работает, но, в основной директории есть папка admin, данные правила(rewriterule) не дают напрямую обращаться к админке как каталогу, что я не учёл и как это исправить?
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 2
@dodo512
RewriteEngine on

RewriteRule ^admin($|/) - [L]

RewriteRule ^$ index.php?module=page&url=main [L,QSA]
RewriteRule ^([^/]*)/?$ index.php?module=category&url=$1 [L,QSA]
RewriteRule ^([^/]*)/([^/]*)/?$ index.php?module=page&url=$1 [L,QSA]
Ответ написан
Zettabyte
@Zettabyte
Проф. восстановление данных ▪ Вопрос? См. профиль
У меня в своё время была схожая задача. Вот альтернативный вариант, вдобавок к предложенному - добавить перед вашими правилами вот такие строки:
RewriteCond %{REQUEST_URI} "admin/" [OR]
RewriteCond %{REQUEST_URI} "admin"
RewriteRule (.*) $1 [L]

Отдельно отмечу, что в моём случае в исключаемой папке был обработчик запросов на PHP, для вашего случая информации об этом нет.

P.S.
Кстати, ещё один вариант - это добавить перед каждым вашим RewriteRule строку
RewriteCond %{REQUEST_FILENAME} !-d
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы