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

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

4 декабря 2009 г.

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

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

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

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

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

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

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

 

 

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

11 ноября 2011 г.
Кто-то исследует недостатки сайта. Выражаю глубокую благодарность скромному анониму.

6 ноября 2011 г.
Сайт снова пошел в рост, а новости застыли на месте больше года назад. Пора опубликовать какую-нибудь новость

19 июня 2010 г.
Пара банальностей и немного о новых алгоритмах. Или Caffeine и число страниц в индексе Google.

15 июня 2010 г.
Вот уж никогда не подумал бы... но маленький эксперимент зашел дальше, чем можно было предположить.

12 апреля 2010 г.
Не очень новая новость от Google – появился еще один фактор, влияющий на ранжирование.

11 января 2010 г.
Вернемся ненадолго в старый год – благо, по старому стилю Новый еще не наступил. Хорошая лазейка для опоздавших.

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

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

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

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