Что такое Http — просмотр заголовка и проверка кода ответов сервера (200, 301, 302, 404, 500)

10 Март, 2011

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня я хочу поговорить в первую очередь о таком важном понятии для правильной работы любого сайта, как правильный ответ сервера. Что это такое? Сначала мы рассмотрим чуток теории о том, какие коды ответа бывают, на какие стоит обратить особое внимание, ну и как их проверить для всех страниц своего проекта.

Формирование вашим сайтом правильных http ответов при загрузке в браузер тех или иных его страниц может стать залогом успешного продвижения сайта, а вот неправильно выдаваемые коды могут здорово подорвать позиции вашего проекта вплоть до полного его исключения из индекса поисковых систем. Но давайте сначала в общих чертах разберемся в том, что это такое, зачем код нужен и почему неправильный ответ может вызвать проседание сайта в поисковиках.

Что такое http и онлайн сервисы для просмотра ответа сервера


Итак, при запросе браузером пользователя какой-либо страницы вашего сайта вместе с Html кодом этой вебстраницы, обозревателю будет передан и так называемый Http заголовок с ответом хоста, в котором помимо прочей информации будет указан код. Он представляет из себя трехзначное число (наиболее часто встречаются варианты 200, 301, 302, 404), которое обозначает ситуацию, сложившуюся на хосте при обработке запроса браузера.

Что такое HTTP? Это протокол, по которому осуществляется обмен данными между вебсервером, на котором расположен интересующий вас сайт, и вашим браузером. Расшифровывается аббревиатура как Hypertext Transfer Protocol. Браузер пользователя обращается к серверу с запросом какого-либо документа и получает соответствующий ответ.

Если ответ на http запрос приходит положительный (200 OK), то браузер начинает загрузку нужного ему файла. Если отрицательный, то информирует об этом пользователя. Имеется еще и шифрованный протокол SHTTP, но сути дела это не меняет.

Например, при успешной загрузке страницы, в браузер будет передан Http заголовок с кодом 200 OK (кроме цифр еще приводится и поясняющая надпись). В случае, если запрошенная страница на сервере найдена не будет, то браузер получит ответ 404 Not Found. Можете сами проверить ответ главной страницы своего сайта, например, на этом сервисе.

К примеру, введя туда заведомо несуществующий адрес страницы своего ресурса (для этого после доменного имени можно написать любую ахинею, например, http://ktonanovenkogo.ru/трали-вали), будет получен примерно такой Http заголовок:

HTTP/1.1 404 Not Found
Server: nginx/0.6.32
Date: Wed, 09 Mar 2011 14:52:43 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.17
X-Pingback: http://ktonanovenkogo.ru/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Wed, 09 Mar 2011 14:52:43 GMT
Vary: Accept-Encoding

И это хорошо, ибо поисковые системы правильно обработают данный ответ сервера и не будут добавлять в индекс вашу несуществующую вебстраницу (404 страница для Joomla, 404 Not Found для Вордпресса).

Причем стоит учитывать, что несуществующие документы могут появиться как по вашей вине, так и из-за ошибки какого-либо доброжелателя, разместившего где-нибудь обратную ссылку на ваш сайт с ошибкой. Посмотреть те несуществующие документы (фактически битые ссылки), которые имеются на вашем ресурсе, вы можете в Яндекс Вебмастере или панели Google, как это было описано в статье Проверка битых ссылок.

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

В принципе, еще хуже ситуация может сложиться, если вместо того, чтобы создать отдельную вебстраницу 404 для своего ресурса, вы настроили переброс посетителей на главную, в случае отсутствия запрашиваемого документа на сервере. Поисковые системы, не получив кода 404, вынуждены будут проиндексировать все эти не найденные страницы, а фактически содержимое главной.

Получится совсем неприятная картина — главная будет доступна сразу по неограниченному множеству адресов, ибо при запросе или переходе по битой ссылке будет открываться все время она. Выпадение из индекса главной из-за дублирования контента может нанести очень существенный урон всему продвижению сайта, ибо она, как правило, имеет наибольший статический вес и именно на нее будет приходиться львиная доля всех обратных внешних ссылок.

Обязательно проверьте коды ответа хотя бы у некоторых вебстраниц вашего ресурса, и особенно проверьте правильность цифр, выдаваемых в ответ на запрос несуществующего документа (введите что-то типа http://vash-domen.ru/jhguytrhkfkfijd). Для этой цели можно воспользоваться приведенным выше онлайн сервисом или же рядом других, способных показать все это:

  1. Чтобы быть абсолютно уверенным в том, что поисковики правильно интерпретируют коды ответа вашего хоста, можете воспользоваться инструментом Яндекса Проверка ответа сервера, который, правда, будет вам доступен только после регистрации в Вебмастере, но добавиться туда, так же как и в панель Гугла, нужно будет в любом случае.

  2. Есть еще любопытный онлайн сервис, который позволит узнать коды ответов сразу для 200 введенных вами Урлов. Довольно удобная вещь, ибо можно будет загрузить список Урлов и быстро получить разблюдовку.

Все возможные варианты кодов ответа сервера


Обращу ваше внимание еще и на ответ сервера 301, который появляется в случае использования редиректа (перенаправление навсегда). Дело в том, что поисковые системы рекомендуют использовать 301 редирект в случае изменения адреса (URL) страницы сайта (он будет перебрасывать посетителя со старого Урла на новый) или, например, при склейке зеркал сайта с WWW или без WWW, как это было описано тут.

Если вы использовали 301 редирект, то можете проверить правильность Http ответа при обращении к склеенным Урлам. Например, при запросе www.ktonanovenkogo.ru сервер дает правильный ответ 301 Moved Permanently:

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

Но сделал он все очень грамотно, ибо поначалу новые оптимизаторы, занимающиеся продвижением этого проекта, никак не могли понять, отчего позиции сайта резко просели. Как это реализовать на практике я не знаю, но тот вебмастер сделал так, что все страницы успешно открывались и отлично работали, но при этом в Http заголовке для всех них сервер давал ответ 404 Not Found.

Пустяк, вроде бы, абсолютно не влияющий на корректную работу ресурса, но напрочь убивающий все усилия по продвижению этого проекта. На этом примере, наверное, еще более наглядно можно увидеть важность проверки кодов ответа.

Правда в случае обнаружения неправильно формируемых кодов вам, скорее всего, придется обращаться за помощью к владельцу хостинга, в случае виртуального хоста, или же придется решать проблему самим, в случае выделенного сервера. Но главное, это вовремя диагностировать и локализовать проблему, воспользовавшись для этого соответствующими сервисами, некоторые из которых я упомянул чуть выше.

Вообще, все коды ответа сервера можно разделить на пять групп:

  1. 100-199 являются информационными, говорящими о том, что сервер обрабатывает запрос
  2. 200-299 означают, что запрашиваемые у сервера данные были успешно переданы (например, 200 — запрос был успешно выполнен и требуемые данные переданы)
  3. 300-399 означают переадресацию и необходимость выполнить дополнительные действия (например,301 — грубо говоря, документ изменил адрес навсегда; 302 — документ изменил адрес временно)

  4. 400-499 означают, что запрос был сформирован не правильно и выполнен быть не может (например, 404 — документ по указанному адресу не найден на хосте)
  5. 500-599 означают, что на сервере произошла ошибка и запрос выполнен быть не может

Более подробно посмотреть все возможные коды ответа в Http заголовке вы можете, например, в Википедии.

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Еще:

Рубрики :Онлайн сервисы

Комментарии и отзывы

Дмитрий

Спасибо за статью.

У меня была поучительная история. Переименовал одну из рубрик на WP, после этого новые записи в ней упорно не индексировались Яндексом. Долго ломал голову, выяснилось, что WP не включил постоянный редирект для старых записей и они остались на сервере под теми же урлами. Проблема решилась обновлением WP.

Андрей

Благодарю за статью

larisenok

спасибо огромное за такую статью — было очень интересно почитать и я добавлю вас в свою рссленту

radiomaster

Дмитрий, еще есть плагины для определения кодов ответа, например, для FF:

— firebug, вы его раньше описывали, разноплановый инструмент.

— LiveHTTPHeaders http://livehttpheaders.mozdev.org/index.html чисто под заголовки, очень удобный.

Дмитрий

radiomaster: спасибо большое за ценное дополнение.

Webliberty

А как настроить чтобы сервер отдавал вот такой ответ:

Expires: Wed, 11 Jan 1984 05:00:00 GMT

Cache-Control: no-cache, must-revalidate, max-age=0

Last-Modified: Wed, 09 Mar 2011 14:52:43 GMT

т.е. время последнего изменения, сколько хранить кэш?

mixac

Спасибо за подсказку проверил код ответа пока 200,раньше и внимания на это не оброщал.

surfer

Спасибо долго искал аналогичный материал, но хотелось бы узнать, чем наполнить страницу ошибки?

Марат

Здравствуйте!

Поставил 301 редирект с WWW на без WWW. Но при проверке несуществующего адреса www.site.ru/несуществующая.html, перекидывает на главную без WWW. Как бы решить эту проблему. Спасибо.

Руслан

Здравствуйте, Дмитрий. Помогите решить проблему — на моем сайте (Joomla! 1.5.23) некорректно работает обработка 404 ошибки.

Например, URL реальной страницы (свой SEF отображение):

http://banketoff.com/index.php/mainmenu-halls/a-halls/svadebniy-banket-moskve ,

но если поставить пробел или добавить-удалить символ в любом месте URL после «http://banketoff.com/index.php/mainmenu-halls/», и сделать, например, такой URL:

http://banketoff.com/index.php/mainmenu-halls/a-halls/svadebniy-banket-moskve_

код 404 ошибки не выдается.

Все эти действия в первой части адреса приводят к нормальной 404 ошибке.

Очень прошу помочь решить проблему. Заранее спасибо.

Дмитрий

Руслан: скорее всего этот вопрос нужно задать вашему хостеру и добиться от него вразумительного ответа.

Василий

Облазил весь интернет, так и не нашел ответа. Может Вы сможете мне помочь?

Куда конкретно нужно прописать скрипт на сайте джумла 1.5 для правильного ответа If-Modified-Since. На джумле включен модуль для создания ЧПУ.

Зарание спасибо.

Александр

А что делать если ответ 200ОК? И переадресация идет на главную страницу.

Светлана

У меня главная страница с www и без www — обе показывают 200 OK, хотя в robots.txt указан основной хост, на яндексе прописаны зеркала и указан основной хост и в htaccess стоит редирект...

Что я сделала не так? Не подскажете?

Хороший у вас сайт, плюсогугланула 🙂

Ну сделала я свою страницу 404...и что это мне дало, не очень поняла из статьи...ARTIO не ставила, уже много страниц проиндексировано Яндексом, боюсь экспериментировать.

А 130 страниц 404 как висели с весны в яндекс мастере так и висят, некоторые давноудалены на сайте, а другие получились, когда я не сразу встроенный sef включила. И как с этими страницами быть? Меня накажут?

Буду очень призательна за ответы на мои вопросы. Я подписалась.

Затвитерила. Контактнула. Фэйсбукнула.

Gorik

Спсибо, очень полезная статья!

Павел

Статья как всегда очень содержательна, помогла спасибо!

Кстати, ответ сервера я проверяю http://analizsaita.com/proverit-otvet-servera

Александр

У меня прото беда.Раньше были Last Modified и 304 Not Modified, а теперь нет. Пробовал плагин Add Headers — работает прекрасно (есть Last Modified и 304 Not Modified), но разваливается sitemap.xml Плагин снес.

Вствалял в файл шаблона header.php.

Не работает.

Устанавливал Hyper Cache — толку нет.

Ничего разумного нагуглить не смог. И что тут делать?

Подписаться не комментируя