Мой профиль...

Search This Blog

Monday, December 21, 2009

Что такое ЧПУ? - HOWTO User Friendly URL?

Что такое ЧПУ?

ЧПУ (англ. User Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «человекопонятный урл» (где «урл» — жаргонное обозначение URL).

Классический подход

Обычно параметры запроса (например, ID нужной страницы) передают сайту через GET-запрос, то есть указывая в URL после вопросительного знака в виде:

* /acticles.php?tag=summer&action=list — просмотр списка статей с меткой summer (лето).
* /news.php?topic=4&year=2003&month=10&sort=1 — отсортированные новости по теме 4 за октябрь 2003.
* /catalogue.php?sect=11&kind=6&manuf=63 — товары производителя 63 типа 6 в отделе 11.

Это вполне понятно и естественно для разработчиков и программ, но не совсем понятно и не удобно для посетителей. Даже если числовые идентификаторы полностью заменить на человеческие слова, то адрес всё равно останется очень громоздким.

Также адреса часто становятся привязанными к технической реализации, так как, например, в «чистом» PHP часть URL до вопросительного знака указывает на файл скрипта.

Концепция ЧПУ

Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Те же самые примеры, но с ЧПУ будут выглядеть уже так:

* /articles/tags/summer/ — статьи по меткам, метка «лето».
* /news/sport/2003/10/ — новости спорта, 2003 год, октябрь.
* /catalogue/light/bulbs/GE/ — каталог товаров, отдел «Свет», лампочки, производитель GE.

Или, даже так:

* /статьи/метки/лето/ — статьи по меткам, метка «лето».
* /новости/спорт/2003/10/ — новости спорта, 2003 год, октябрь.
* /каталог/свет/лампочки/GE/ — каталог товаров, отдел «Свет», лампочки, производитель GE.

Достоинства для посетителя очевидны:

* подобные адреса очень легко запомнить;
* можно продиктовать URL по телефону;
* чтобы перейти на уровень вверх достаточно стереть нужную часть пути;
* если человек уже был на вашем сайте и набирает адрес вручную, то он сразу может обратиться к нужному ему документу глядя на URL’ы предыдущих запросов.

Недостатки:

* увеличение затрат ресурсов сервера для большинства реализаций;
* усложнение настройки сайта в связи с необходимостью вмешиваться в конфигурационные файлы веб-сервера.

Реализация

Apache

Для веб-сервера Apache существует мощный модуль mod_rewrite, который включается в стандартный дистрибутив. Он обладает массой возможностей интерпретации URL перед обработкой необходимым модулем.

В большинстве случае в файле .htaccess указывается с помощью регулярного выражения формат URL, который должен быть обработан как другой URL. Например:

RewriteEngine on
RewriteRule ^article/([0-9]+)/? article.php?id=$1 [L]

Первая строчка включает mod_rewrite. Во второй указывается, что веб-сервер при запросе URL вида /article/450/ должен обратиться к /article.php?id=450 .

Обработка URL в собственном скрипте

Разработчик может вручную обработать URL и на основе него вызвать какую-то функцию. Для этого, чаще всего, нужно с помощью mod_rewrite направить все запросы одному скрипту для обработки. Для этого нужно добавить в файл .htaccess следующее содержимое:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Скрипт index.php уже будет брать URL из переменной REQUEST_URI (в PHP из $_SERVER['REQUEST_URI']) и на основе каких-то настроек запускать необходимый код.

Случаи, когда введение ЧПУ не оправдано

* В случаях когда адрес не виден пользователю (например, AJAX), так как ресурсы сервера будут тратиться на разбор URL зря.
* Если страница предусмотрена для просмотра ограниченным количеством пользователей (например, страницы администрирования, C-панели) и не предусматривается посещение страницы поисковыми ботами.
* Если посещение страницы предполагает обязательное использование введенных параметров (например, формы регистрации, данные для вычисления скриптом и т.п.)

No comments:

Релевантные посты...

Related Posts with Thumbnails