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

Заметки на манжетах

4 декабря 2009 г.

Еще раз о надоевшем. То есть, о коде статуса несуществующей страницы.

Зануда я или нет? :-) Чтобы у читателей не было сомнений, повторю еще раз: ройтесь в логах почаще! Это дает внимательным людям информацию и будит мысли. А невнимательным нечего делать ни в веб-разработке, ни в SEO.

Меня, например, давно занимал вопрос: что делать с назойливым интересом поисковых ботов к несуществующим страницам? У них долгая память – мне достаточно было один раз ошибиться в логике движка, чтобы потом боты полгода регулярно запрашивали неверные ссылки, получали в ответ статус 404 и снова возвращались посмотреть, не появилось ли чего по этому же адресу. Интерес к битым ссылкам был устранен только запретом в robots.txt, но стоило мне этот запрет снять, как боты немедленно пошли той же дорогой. Оказывается, рано снял. Боты забыть дорогу еще не успели.

Вообще-то в протоколе HTTP/1.1 для такого случая есть код статуса «410 Gone» – он означает, что страница удалена навсегда. Но раньше нигде не встречалась информация, как боты понимают этот статус. Не так давно информация была наконец-то получена. На справочном форуме вебмастеров Google. Спасибо, Оксана, строители самодельных движков ценят информацию и помнят добрые дела.

Остался открытым только один вопрос. А как различать визит бота за страницей, которая была, но удалена, и запрос страницы, которая никогда не существовала (например, по вражьей битой ссылке)? Хранить информацию об адресах всех страниц, которые были удалены? CMS и так усложняются с каждым днем, нагружая множество серверов лишней работой и лишними данными. И переделка структуры данных даже в несложном движке – работа немаленькая...

Решение пришло неожиданно. Оно опиралось только на знание повадок поисковых ботов. Если бот уже хоть раз считывал страницу, он в повторном запросе поставит If-Modified-Since с датой предыдущего запроса к странице. Если приходит по этому адресу впервые, If-Modified-Since в его запросе не будет. Вот и весь признак. Если спрашивает изменения, то эту страницу он уже считывал, а значит, она была. Нужно отдать 410. Если он впервые пришел и об изменениях не спрашивает, отдадим ему 404.

Вот и вся хитрая логика. Подробнее с образцом кода на php напишу статейку немного позже. Заодно и о статусах перенаправления кое-что расскажу.

 

 

Заметки
на манжетах

4 декабря 2009 г.
Ох уж эта форма... Не ожидал, что ей будут так интересоваться. Даю инструкцию по применению.

11 ноября 2009 г.
Что-то радует, а что-то не очень.

22 сентября 2009 г.
Здравствуй, Яндекс-бот, давно не виделись. Снова о заголовках... и о грустном.

31 июля 2009 г.
И еще немного об HTTP-заголовках. На этот раз о том, какие заголовки нужны и как движок должен их отдавать.

21 июня 2009 г.
Продолжаем разговор о взаимодействии с поисковыми роботами. Как с ними разговаривать?

9 июня 2009 г.
Только сейчас дошли руки как-то обозначить смену статуса...

8 февраля 2009 г.
Сегодня закончил описание новостной ленты. Тема ленты завершена, но мы к ней еще вернемся...

4 февраля 2009 г.
И наконец, давно обещанное описание ленты новостей

3 февраля 2009 г.
Едва успел описать здесь плагин для отсылки почтовых сообщений, как обнаружил в нем дыру. Исправлено, мин нет.

1 февраля 2009 г.
Жизнь продолжается. А я этого и не заметил...