Приветствую вас, дорогие читатели! В прошлой статье по технологии PHP+MySQL я упомянул Apache-модуль mod_rewrite, который позволяет преобразовывать URL адреса.

Так как преобразование в ЧПУ осуществляется с помощью регулярных выражений, а это целый язык, требующий изучения, то в этой статье хотел бы рассказать о самым популярных форматах преобразования. Но сначала немного теории.
Mod_rewrite - мощный Apache-модуль, который входит в состав дистрибутива. Как же происходит замена URL? Работа модуля осуществляется по принципу "на лету". То есть когда пользователь обращается по ЧПУ-адресу, модуль сразу же проверяется адрес, который замаскирован под ЧПУ, и обращается к ниму. Естественно, посетитель этих манипуляций не замечает и ему кажется, что он обратился по адресу, который ввёл в адресную строку браузера. Какие же преимущества имеют ЧПУ-адреса?
- Более приятен для посетителей, так как адрес лучше запоминается.
- Безопасность, так как посетитель не знает реального адреса.
- ЧПУ, содержащие название статьи, лучше для SEO
Активация модуля mod_rewrite
Как я уже сказал, модуль включён в стандартный дистрибутив, поэтому нам всего лишь нужно его активировать. Активация происходит в .htaccess. Итак, приступим. Открываем наш файл .htacces или создаём, если его нет. Прописываем следующую директиву:
RewriteEngine on
Отлично, теперь наш модуль активен и мы можем приступить в преобразованиям. Рассмотрим первый формат.
Статический ЧПУ-адрес с одной переменной
Итак, в этой статье я говорил, что сайты на PHP и MySQL имеют адреса следующего формата:

Как правило, такие адреса называют динамическими. Вот мы сейчас и займёмся преобразованием динамических адресов в ЧПУ.
Допустим, нужно преобразовать из lis.php?id=3 в bols3.hi. Регулярное выражение будет иметь следующий формат:
RewriteRule ^НАЗВАНИЕ СТРАНИЦЫ([0-9]+)\.РАСШИРЕНИЕ$ ИМЯ НАСТОЯЩЕГО АДРЕСА.php?ПЕРЕМЕННАЯ=$НУМЕРАЦИЯ
То есть в нашем случае получаем следующее:
RewriteRule ^bols([0-9]+)\.hi$ lis.php?id=$1
Теперь вместо адреса lis.php?id=90 (где 90 - id) мы можем спокойно обращаться к bols90.hi.
Статический ЧПУ-адрес с множеством переменных
Рассмотрим такую ситуацию, когда нужно преобразовать адрес с множеством переменных. Например, из lis.php?id=345&cat=3 в bols345-3.hi. Ситуация похожая, но сейчас используется две GET-переменные. В качестве разделителя используется тире. Получаем следующее выражение:
RewriteRule ^bols([0-9]+)-([0-9]+)\.hi$ lis.php?id=$1&cat=$2
Графически сам принцип преобразования будет выглядить следующим образом:

Архивный ЧПУ-адрес
Многие архивы на сайте имеют адрес archive.php?year=2003&month=10. Мы же преобразуем его в archive/2003/10/. Получаем следующую строку:
RewriteRule ^archive/([0-9]+)/([0-9]+)\$ archive.php?year=$1&month=$2
ЧПУ-адрес для тегов
Сейчас теги присутствуют почти на каждом блоге и сайте. Попробуем изменить адрес для тега winter - posts.php?tag=winter в posts/tags/winter/. Имеем следующее выражение:
RewriteRule ^posts/tags/([0-9]+)\$ posts.php?tag=$1
Кстати, для индексации страниц с динамическими адресами поисковые системы применяют отдельный алгоритм. Я не знаю чем он отличает от обычного, но ЧПУ-преобразования, опять же, помогают указать роботу, что нужно индексировать наш адрес, как обычную статическую страницу.

Рубрика:
Просмотров: 7824
Дата: 11.10.09

2.03.10
3.02.10
12.01.10
28.11.09
22.11.09
22.10.09
27.09.09
18.09.09
18.08.09
6.08.09