Быстрая CMS
Обратная связь Карта сайта
Главная Создание сайтов Практика Строим CMS Наивное О проекте Блог

Псевдостатика, она же «ЧПУ»

Прежде всего: ЧПУ – это Числовое Программное Управление. Для металлообрабатывающих станков. Про «человекопонятность URL» даже и говорить не хочу – так же, как ни один человек (кроме вебмастеров) не хочет в URL что-нибудь понимать. Ссылки были придуманы, чтобы кликнуть и перейти, а не заучивать цепочки латинских символов. Даже если они «осмысленные».

Во-вторых: не верьте тем, кто с глубокомысленным видом скажет, что поисковикам якобы «больше нравятся» URL, оформленные под статику. Роботам это все равно. Так же, как и пользователям. Кто-то вам сказал, что робот примет это за статику, ориентируясь на написание blabla.html? Не слушайте этого человека, скорее всего он сам не понимает, что говорит.

Вы считаете, что такие резкие заявления нужно обосновать? – Вы правы, нужно. Сейчас обосную.

Начну с самой большой глупости – будто робота можно обмануть псевдостатической ссылкой. Так вот, вы его не обманете по одной простой причине: статика от динамики отличается не одним URL'ом. Когда вы регистрируете сайт в поиске Яндекса, его робот считывает главную страницу и тут же выставляет вам претензию: ваш сервер не отдает кодировку документов. Или не показывает дату их последнего изменения. Как же он узнал?

Конечно же, проанализировал отданный сервером заголовок (HTTP Response Header). А из него очень несложно узнать, что собой представляет ваша главная страница. Вот, например, как откликается корневая страница этого сайта:


Заголовки http://www.ahp-net.ru/:

HTTP/1.1 200 OK
Date: Sun, 22 Jun 2008 19:15:42 GMT
Server: Apache/2.2.8
X-Powered-By: PHP/5.2.5
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html; charset=windows-1251

Тут же на этом сайте лежит совершенно честная статическая страничка 404.htm (для чего она здесь нужна, рассказано в описании движка). Посмотрите на отклик сервера при запросе этой страницы:


Заголовки http://www.ahp-net.ru/404.htm:

HTTP/1.1 200 OK
Date: Sun, 22 Jun 2008 19:25:57 GMT
Server: Apache/2.2.8
Last-Modified: Mon, 19 May 2008 15:14:35 GMT
ETag: "a6da3d-354-4504652bea040"
Accept-Ranges: bytes
Content-Length: 852
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html

Разница видна невооруженным глазом. В первую очередь по предательской строчке
X-Powered-By: PHP/5.2.5 – сервер сразу «сдал», чем собрана страница.
Далее у статики видим заголовок Last-Modified:, который указывает дату редакции файла. И ETag: – уникальный системный идентификатор файла. А еще Content-Length: – размер файла со статической страницей известен серверу заранее, в отличие от страницы, сгенерированной скриптом.

Ну и как думаете, друзья – обманете вы глупого робота своим расширением .html? Жаль, что роботы не умеют смеяться... Кроме того, в этих примерах был показан отклик на простой запрос без дополнительных заголовков вроде If-Modified-Since:. Если вам интересны запросы реальных поисковых роботов, в одной из следующих статей показаны заголовки запросов Google, Яндекса и Рамблера. Там же рассказано о порядке «общения» поисковых ботов с сайтом.

Тем не менее, псевдостатику применяют. Сначала это делали, преобразуя в «статический вид» параметры скриптов, потом дошли до такой оперетты, как транслитерация заголовков – получается нечто вроде psevdostatika_ona_zhe_chpu.html – вы думаете, людям такое нужно? :-) Тогда будьте добры, скажите: а на кой чёрт им это нужно?

Несмотря на все сказанное, польза от псевдостатики все-таки есть. Маскировка реального URL помогает улучшить защиту сайта от взлома. Не зная правил преобразования, не видя наименований параметров и имени скрипта, очень проблематично пытаться «шалить» с параметрами. К тому же всегда есть возможность программно поставить под запрет вызов реального динамического URL. Как это делается, можно посмотреть в описании движка, раздел «Проверка корректности запроса».

Я могу совершенно откровенно сказать, что настоящий URL этой страницы – main.php?id=pseudo но проку в этом никакого – обратившись по реальному адресу, вы получите только сообщение «404 Not Found», движок пресекает такие обращения на корню. Так что хакерам здесь делать практически нечего, основная уязвимость серверных скриптов (передача поддельных GET-параметров) прикрыта.

Ну, а с эстетической точки зрения я тоже согласен: имитация статики выглядит в строке адреса как-то приятнее, чем скрипт с параметрами. Если, конечно, не лепить эту псевдостатику из длинных фраз. Может быть, лучше расшифровать ЧПУ как «Человеку Приятный URL»?