Skip to content

Instantly share code, notes, and snippets.

@codedokode
Created September 22, 2013 16:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codedokode/772a4ccc03e41d6b7cba to your computer and use it in GitHub Desktop.
Save codedokode/772a4ccc03e41d6b7cba to your computer and use it in GitHub Desktop.
Красивые и некрасивые URL

Красивые и некрасивые URL

Когда проектируется сайт, разработчик, среди прочего, должен решить, какие на нем будут разделы и какие у них будут URL. Веб-серверы (веб-сервер — это программа, которая отвечает на запросы браузеров и отдает страницы сайта — например, Nginx, Apache, IIS) можно настроить так, чтобы при обращении по одному URL, например отдавался файл из какой-то папки, а по-другому — вызывался PHP-скрипт и генерировал HTML-страницу.

По умолчанию веб-сервер просто ищет файл, который указан в пути в URL, и отдает его (если такой файл есть на сервере, если его нет, отдается код ошибки 404 Not Found). То есть, при обращении по адресу http://example.com/images/cats/1.jpg, веб-сервер проверяет, есть ли в папке images папка cats, а в ней — файл 1.jpg. Если такой файл есть, то он отдается пользователю. Если нет, выводится страница с сообщением об ошибке.

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

Один из вариантов — это составлять URL из названий разделов, в которых находится страница, например, на сайте интернет-магазина можно использовать такую схему:

Иногда к URL могут добавляться дополнительные параметры, например адрес 5-й страницы каталога телевизоров с сортировкой по цене может выглядеть так: http://example.com/products/tv/?orderBy=price&page=5.

Другая схема используется на сайтах вроде Википедии. Там нет названий разделов в URL, вместо них просто хранится название страницы: http://ru.wikipedia.org/wiki/Кот_Шрёдингера. Заметь, что и тут пробелы заменяются на подчеркивание. Это удобно, так как позволяет пользователю дописать интересующий его термин в URL и попасть на нужную страницу.

На сайтах социальных сетей (вроде Twitter, Facebook), где в центре внимания — пользователь и информация о нем, в URL используются id пользователей, никнейм или имя и фамилия. Вот например, как могут выглядеть такие URL в какой-нибудь воображаемой соцсети:

Похожий подход используется на сайте last.fm, где в основе URL лежат названия групп, альбомов и песен:

На некоторых сайтах (например, новости или блог) используется дата в URL страницы. Вот, например, URL, которые использует новостной сайт lenta.ru:

Логичный и читаемый URL (в России их иногда называют «ЧПУ», «человеко-понятные URL», на Западе «pretty URLs») помогает пользователю по виду ссылки угадать, что по ней может находиться. Также, он помогает поисковым роботам лучше индексировать сайт. К сожалению, не все разработчики понимают важность этого (или, возможно, они не умеют правильно настроить сервер для поддержки «красивых» URL). Часто можно встретить URL вроде http://example.com/content.php?id=f677f0a9-f542-f3373663-9898&section=12&session_id=637367s7d8h87g87. Почему надо придумывать такие URL и что в нем зашифровано, кроме автора, никто не скажет. По памяти такой URL не введешь. Также некоторые разработчики (думая, что способствует повышению рейтинга в поисковых системах) делают излишне длинные URL, да еще и с транслитом. Это тоже не очень хорошо.

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

Еще немного полезных мыслей про выбор структуры URL можно почитать в одной из глав книги А. Лебедева «Ководство»

Стоит помнить, что в пути URL маленькие и большие буквы различаются (/path и /PATH — разные пути). Также, некоторые символы нельзя там использовать, это символы «пробел», «знак вопроса» ? (так как со знака вопроса начинается строка запроса), «решетка» # (с нее начинается хеш), знак «процент» % используется для специальных целей и его в общем случае тоже нельзя использовать. Еще не рекомендуется использовать символы ", ^, [, ], \, {, }, |. Запоминать этот список не надо, просто надо знать, что он есть.

http://archive-ipq-co.narod.ru

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment