.htaccess – регулярные выражения

Использование регулярных выражений – это один из стандартных и правильных приёмов используемых при настройке переадресации или реализации красивых ссылок на вашем сайте. Регулярное выражение в этом случае представляет собой некий шаблон и в случае если запрашиваемый адрес удовлетворяет шаблону, срабатывает правило обработки.

Недавно, к нам обратился клиент, у которого .htaccess весил около 4МБ. Когда мы его открыли – был и смех и слезы. Когда разработчики делали сайт (быдлокодеры, по другому не скажешь) – каждый урл они обрабатывали в htaccess статическим образом. Т.е. клиент, после добавления новой странице на сайте – открывал htaccess и дописывал правило для красивой ссылки на эту страницу. И для каждого раздела – у него там были сотни правил – хотя должно было быть всего одно!

В регулярном выражении можно использовать любые символы и конечно же специальные символы.

К спецсимволам относят:

Круглые скобки () – их используют для выделения групп символов. В последствии к каждой группе можно обратится по ее порядковому номеру.
Квадратные скобки [] используются для перечисления допустимых символов.
Символ “^” обозначающий начало строки.
Символ “$” обозначающий конец строки.
Символ “*” ставится после символа (группы), который может отсутствовать или присутствовать неограниченное число раз подряд.
Символ “.” обозначает любой символ.
Символ “|” обозначает альтернативу.
Символ “?” ставится после символа (группы), который может как присутствовать, так и отсутствовать.
Символ “+” действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз.
Решетка # комментарий.

Рассмотри пример использования круглых скобок:

RedirectMatch /([^/]*)/([^/]*)/catalog.htm$ http://artkiev.com/catalog.php?$1=$2

Данная команда выполнится в случае, если пользователь обращаясь к сайту, введет адрес содержащий, кроме имени домена ещё две директории и при этом обратится к файлу catalog.htm. То есть, например, пользователь откроет http://artkiev.com/buy/mobile/catalog.htm – то правило выполнится и будет переадресован на URL http://artkiev.com/catalog.php?buy=mobile.
Комбинация спецсимволов [^/]* расшифровывается как любое количество любых символов кроме символа “/”.

 

Рассмотрим еще один пример использования символа альтернативы

RedirectMatch ^/(catalog|catalogs|shop|shops)/([^/]*)/tovar.htm$ http://artkiev.com/shop.php?go=$1

В результате делаем равносильными адреса:

http://artkiev.com/catalog/mobile/tovar.htm

http://artkiev.com/catalogs/mobile/tovar.htm

http://artkiev.com/shop/mobile/tovar.htm

http://artkiev.com/shops/mobile/tovar.htm


Другие публикации:



Написать комментарий через:

 
               
  • Локальный блог
  •  
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статусы для соц.сетей на ArtKiev Design Studio