Человеку Понятный Урл

Человеку Понятный Урл

ЧПУ (англ. Friendly 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.

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

Также адреса часто становятся привязанными к технической реализации, так как, например, в «чистом»[1]

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

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

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

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

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

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

Недостатки:

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

Реализация

Apache

Для веб-сервера

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

RewriteEngine on
RewriteRule article/(\d+)/? 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$_SERVER['REQUEST_URI']) и на основе каких-то настроек запускать необходимый код.

Веб-Django или Ruby on Rails, веб-сервер не обращается напрямую к скрипту через URL (как, например, в чистом

Для задачи шаблона URL используется либо регулярные выражения, либо специальный язык.

Например, в RubyOnRails:

ActionController::Routing::Routes.draw do |map|
  map.connect 'users', :controller => 'user', :action => 'list'
  map.connect 'users/:id', :controller => 'user', :action => 'show'
end

Строка 'users/:id' указывает на любые URL вида /users/1 или /users/login. Когда посетитель запросит такой адрес, то будет вызван метод show() класса UserController, а номер, которым заменил :id (в этом примере это 1 или login) будет передан как параметр. Собственно, при запросе страницы /users/ будет вызван метод list() того же класса, но уже без параметров.

В некоторых веб инструментариях (например, Ramaze написанном на

Например, если у нас есть класс:

class CommentsController < Ramaze::Controller
  def index
    # Создание списка комментариев
  end
 
  def show(id)
    # Вывод комментария с нужным ID
  end
end

То чтобы вывести комментарий по ID равным 5 мы должны открыть URL /comments/show/5/ , то есть URL становится вида /класс/метод/первый аргумент/второй аргумент/ . Конечно же обратиться мы можем только к классам, которые являются контроллерами, то есть к тем классам, для которых мы специально указали, что они должны обслуживать посетителей.

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

В случаях когда адрес не виден пользователю (например,

Примечания

  1. Без использования веб-framework’ов

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Человеку Понятный Урл" в других словарях:

  • Человеку понятный урл — ЧПУ (англ. Friendly URL)  аббревиатурой от словосочетания «человекопонятный урл» (где «урл»  жаргонное обозначение Содержание 1 Классический подход 2 Концепция ЧПУ 3 Реализация 3.1 …   Википедия

  • Урл — Единый указатель ресурсов (англ. URL Uniform Resource Locator) единообразный локатор (определитель местонахождения) ресурса. По‐английски «URL» целиком произносится как /ɜː(ɹ)l/, по‐русски чаще говорят [у эр эл], [ю эр эл] или [урла] (сленг).… …   Википедия

  • URL — Единый указатель ресурсов (англ. URL Uniform Resource Locator)  единообразный локатор (определитель местонахождения) ресурса. По английски «URL» целиком произносится как /ɜː(ɹ)l/, по русски чаще говорят [у эр эл], [ю ар эл] или [урл]… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»