ЧПУ (Интернет)

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Полнотекстовые веб-адреса»)
Перейти к: навигация, поиск

ЧПУ (Человеко-понятный урл) — жаргонное название веб-адреса, содержащего читаемые слова, а не аббревиатуры или идентификаторы базы данных, написанные латинским алфавитом, отражающее вложенность директорий и название элемента. Часто имеет следующий вид /web/masters/Mithgol/. Компания «Google» подобные адреса называет «простыми»[1].

Передача параметров через GET[править | править вики-текст]

В системах управления содержимым используются базы данных, где страницы хранятся как текст отмеченный уникальным идентификатором по которому и происходит запрос, а за ним и поиск. Такой идентификатор может передаваться веб-серверу явно через GET-запрос (например /index.php?id=1337). Помимо идентификатора могут передаваться и другие настройки, например формат отображения указание на мобильное отображение сайта; формат запрашиваемого содержимого (pdf, rtf, html, plain); смещение в списке элементов и другие.

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

Указанные неудобства делают непригодными для употребления URL с GET параметрами. Для решения подобной проблемы разработчики стараются не использовать такие параметров, либо вместо идентификатора выдавать понятное для человека название. Таким образом страница с адресом /index.php?id=1337 превращается /Бетмен (супергерой). В то же время другие параметры тоже могут быть немаловажными и так же маскируют как подкаталоги (по аналогии с файловой системой в операционных системах) превращая страницу /index.php?id=322&offset=15 в /молотки/15.

Концепция «понятных» URL[править | править вики-текст]

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

Проблемы кирилицы в адресе[править | править вики-текст]

Адресация в интернете устроена так, что все символы берутся из набора ASCII-символов, где не предусмотрена кириллица. По этой причине они шифруются специальным кодом (включая пробелы), вида: %D0%9B (соответствует букве «Л»). Так, например, «Лук» превратится в %D0%9B%D1%83%D0%BA.

Преимущества концепции[править | править вики-текст]

Такие адреса удобней прочитать, понять и воспроизвести. К тому же это помогает ориентироваться в логической структуре сайта, лишь взглянув на вложенность каталогов. Не обязательно переходить на страницу, чтобы узнать, что на ней размещено. В некотрых случаях для того, чтобы пройти на родительские каталоги необходимо всего лишь стереть до нужного места адрес, аналогично тому, когда чтобы перейти на главную страницу стирается всё, кроме доменного имени.

Такие адреса демонстрируются поисковыми системами прямо в поисковой выдаче[2], в том числе по этим адресам происходит поиск ключевых слов.

Недостатки концепции[править | править вики-текст]

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

Реализация на различных серверах[править | править вики-текст]

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

На сервере IIS такой функционал реализуется бесплатным модулем «URLRewriter». В то же время для сервера Apache существует модуль «mod_rewrite», который настраивается через файл .htaccess.

Например, указав следующий код, веб-мастер сможет в PHP через массив $_SERVER['REQUEST_URI'] получать все переданные параметры, а точкой входа по любому запросу будет index.php[3].

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

В веб-фреймворках (CodeIgniter, Django, Ruby on Rails или Zend Framework) веб-сервер не обращается к скрипту, а просматривает специальный файл на предмет настроек указанного пути. Такой путь указывается или регулярными выражениями или на специальном языке.

Например, в Ruby on Rails, чтобы указать, что при вызове /users/login будет вызываться метод show класса users, а в случае /users/ метод index класса users будет следующий код:

Rails::Application.routes.draw do
  get 'users', to: 'users#index'
  get 'users/:id', to: 'users#show'
end

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

Например, так действует Ramaze. При вызове show/id/, где id — переменная. При этом класс обязательно должен быть контроллером.

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

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

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

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

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]