Членораздельная адресация

Никита Кислицин

Хакер, номер #071, стр. 071-116-1

(nikitoz@real.xakep.ru)

Делаем сайт с интуитивно понятной адресацией

Мне приходит много писем от читателей. Разных писем. Кто-то спрашивает, как подключиться к серверу MySQL, кто-то – как открыть файл, некоторые даже просят найти синтаксическую ошибку в скрипте. Но есть и адекватные люди: они задают интересные вопросы, пытаются разобраться в сложных и непонятных вещах. Так, например, недавно меня спросили, как можно сделать, чтобы страницы разработанного на PHP движка имели интуитивно понятные адреса вида /contacts/office вместо /content.php?cid=35216. И в самом деле, тут есть некоторый простор для размышлений.

Зачем это нужно?

Прежде всего тебе нужно понять, что вообще нужно и зачем именно. Смотри. Например, ты разработал классный сайт, сделал отличный движок на php. Адреса разделов сайта определяются, например, так: /index.php?cid=12. Все прекрасно и замечательно. Но есть несколько проблем. Во-первых, редкий пользователь сможет запомнить такой адрес. Ему придется каждый раз заходить на главную страницу и переходить по ссылке. Согласись, было бы удобнее, если бы разделы имели более адекватные адреса типа /news, /documents и т.д. Это позволит пользователям легко запомнить урлы нужных страниц, кроме того, они смогут легко выбрать нужную страницу из history. Также при использовании подобной адресации ты лишаешь пользователей ненужной информации о внутреннем устройстве твоего проекта. В самом деле, им совершенно ни к чему знать об именах ключевых сценариев, параметров и вообще о языке, на котором реализованы программы. Все это добавит солидности и безопасности твоему проекту.

Если ты пройдешься по сайтам крупных компаний, которые, совершенно ясно, используют дорогие динамические движки, то увидишь, что у абсолютного большинства сайтов адреса документов имеют интуитивно ясный вид. Это важное требование, которые предъявляют крутые дяденьки из контор, работающих над usability пользовательских интерфейсов. Следует понимать, что эти дяденьки зарабатывают очень хорошие деньги, и если ты хочешь стать действительно профессиональным web-разработчиком, то должен уметь создавать сайтовые движки с интуитивной адресацией документов. Думаю, я убедил тебя в необходимости прочесть этот материал, тем более что он научит тебя некоторым новым приемам, которые ты легко сможешь применить и в повседневной жизни web-программиста.

Создаем виртуальные файлы

Чтобы понять, как работает этот прием, нужно проследить работу браузера и веб-сервера. После того как браузер отослал запрос, сервер ищет нужный документ. Если документ не находится, сервак возвращает код ошибки 404 и в зависимости от настроек выдает вместо искомого файла содержимое специальной страницы, адрес которой определяется директивой в конфигурационных файлах web-сервера. По задумке разработчиков эта страница должна сообщить пользователю грустную весть о том, что требуемого документа не найдено. Но что мешает нам использовать в качестве такой страницы специальный скрипт, который выведет в заголовке страницы код 200 ОК и некоторую html-страницу? Снаружи пользователь не заметит ничего подозрительного – все как обычно: ввел адрес, нажал enter и получил без всяких задержек содержимое документа. Ну что ж, думаю, тут все понятно. А если непонятно, разберешься по дороге. Создай в корне твоего сайта файл .htaccess со следующим содержимым:

Содержание  Вперед на стр. 071-116-2
ttfb: 82.020998001099 ms