Наука
Регистрация
Advertisement

Шаблон:ОРИСС

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

Передача параметров через GET[]

Во многих CMS, вроде Joomla и им подобных каждой странице соответствует целочисленный идентификатор — номер записи в базе данных. Это число передаётся веб-серверу в явном виде через GET-запрос (то, что идёт в URL после вопросительного знака), в виде:

  • /articles.php?id=148

Также могут передаваться другие параметры:

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

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

Также адреса часто становятся привязанными к технической реализации (например, видны адреса обрабатывающих запросы скриптов).

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

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

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

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

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

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

Но использование кириллицы в адресе затрудняется тем, что в старых браузерах, все символы URL, отличные от ограниченного набора из ASCII‐символов, должны преобразовываться в специальную форму, к примеру:

http://ru.wikipedia.org/wiki/Микрокредит

кодируется как:

http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82

Преимущества и недостатки[]

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

  • подобные адреса очень легко запомнить;
  • можно продиктовать URL по телефону;
  • подобные 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_URIPHP из $_SERVER['REQUEST_URI']) и на основе каких-то настроек запускать необходимый код.

Веб-framework[]

В большинстве инструментариев для создания сайта, таких как CodeIgniter, Django, Ruby on Rails или Zend Framework, веб-сервер не обращается напрямую к скрипту через URL (как, например, в чистом PHP), а в специальном файле настроек указывается связь нужного метода для вывода страницы с шаблоном 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 написанном на Ruby) связь URL и метода класса определяется названием и количеством аргументов метода.

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

class CommentsController < Ramaze::Controller
  def index
    # Создание списка комментариев
  end

  def show(id)
    # Вывод комментария с нужным ID
  end
end

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

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

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

Примечания[]

Ссылки[]


  1. Википедия ЧПУ (Интернет) адрес
  2. Викисловарьадрес
  3. Викицитатникадрес
  4. Викиучебникадрес
  5. Викитекаадрес
  6. Викиновостиадрес
  7. Викиверситетадрес
  8. Викигидадрес

Выделить ЧПУ (Интернет) и найти в:

  1. Вокруг света (Интернет) адрес
  2. Академик (Интернет)/ru/ru/ адрес
  3. Астронет адрес
  4. Элементы (Интернет)+&search адрес
  5. Научная Россия (Интернет)&mode=2&sort=2 адрес
  6. Кругосвет (Интернет)&results_per_page=10 адрес
  7. Научная Сеть
  8. Традицияадрес
  9. Циклопедияадрес
  10. Викизнание(Интернет) адрес
  1. Google
  2. Bing
  3. Yahoo
  4. Яндекс
  5. Mail.ru
  6. Рамблер
  7. Нигма.РФ
  8. Спутник
  9. Google Scholar
  10. Апорт
  11. Онлайн-переводчик
  12. Архив Интернета
  13. Научно-популярные фильмы на Яндексе
  14. Документальные фильмы
  1. Список ru-вики
  2. Вики-сайты на русском языке
  3. Список крупных русскоязычных википроектов
  4. Каталог wiki-сайтов
  5. Русскоязычные wiki-проекты
  6. Викизнание:Каталог wiki-сайтов
  7. Научно-популярные сайты в Интернете
  8. Лучшие научные сайты на нашем портале
  9. Лучшие научно-популярные сайты
  10. Каталог научно-познавательных сайтов
  11. НАУКА В РУНЕТЕ: каталог научных и научно-популярных сайтов

  • Страница 0 - краткая статья
  • Страница 1 - энциклопедическая статья
  • Разное - на страницах: 2 , 3 , 4 , 5
  • Прошу вносить вашу информацию в «ЧПУ (Интернет) 1», чтобы сохранить ее

Комментарии читателей:[]

Advertisement