@Yapryntsew

Как указать исключения mod_rewrite?

Ссылки типа site.ru/index.php?type=value преобразую в site.ru/value. Можно ли сделать исключения для некоторых value и использовать для них другое правило?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»
Если я правильно понял задачу, то Вы преобразуете не первое во второе, а как раз-таки наоборот — преобразуете контекст /value в передачу GET-параметра type со значением value скрипту index.php

Для отдельно взятых value (в данном случае) можно написать вот так:
RewriteEngine On

RewriteRule ^contacts$ contacts.php [L]
RewriteRule ^about$ about.php [L]
RewriteRule ^([a-zA-Z0-9_/-]+)$ index.php?type=$1 [L]


То есть, всё, что передано после первого слеша и попадает под маску [a-zA-Z0-9_/-]+, будет передано в качестве type на index.php, кроме значений contacts и about — они будут перенаправлены на другие скрипты.

Примечание: очень важно соблюдать порядок следования правил, так как выполняется первое правило RewriteRule, под которое попадает запрашиваемый URL. Учитывая, что и contacts и about попадают под маску [a-zA-Z0-9_/-]+, то, будь их обработчики указаны ниже, отработало бы правило, перенаправляющее их на index.php?type=contacts и index.php?type=about
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽