Ошибка 404 или Not Found и другие,
Иногда, входя на тот или иной сайт мы получаем вместо страницы сайта экран с сообщением об ошибке содержащего сообщение «404» или «Not Found». Большинство ошибок являются служебными и Пользователь их не видит. Они используются администратором сервера на котором расположен Ваш сайт чтобы контролировать работу сервера. Что это такое и в чем причина этого попробую немного рассказать ниже.
Сообщения сервера.
Когда на сервере запрашивается страница (например, когда пользователь открывает страницу в браузере или когда ее сканирует робот), сервер в ответ на запрос возвращает код статуса (состояния) НТТР. Этот код статуса содержит информацию о статусе запроса. Код статуса предоставляет информацию о запрашиваемой странице.
Сообщения сервера описаны в Wiki так:
Код состояния HTTP (англ. HTTP status code) — часть первой строки ответа сервера при запросах по протоколу HTTP. Он представляет собой целое число из трех арабских цифр. Первая цифра указывает на класс состояния. За кодом ответа обычно следует отделённая пробелом поясняющая фраза на английском языке, которая разъясняет причину именно такого ответа. Примеры: 201 Webpage Created. 404 Not Found. 403 Access allowed only for registered users. 507 Insufficient Storage. Клиент узнаёт по коду ответа о результатах его запроса и определяет какие действия ему предпринимать дальше, чтобы исключить ошибки. Набор кодов состояния является стандартом, и они описаны в соответствующих документах RFC. |
Таких сообщений существует 40 и они делятся на пять больших групп: информационные сообщения, сообщения об успешном завершении, сообщения о перенаправлении, сообщения об ошибках клиента и сообщения об ошибках сервера.
Подробно рассматривать все я здесь не буду, а приведу только краткое описание:
Status-Code | Eng | Ru | Описание | Примечание |
100 | Continue | продолжить | Начальная часть запроса принята, и клиент может продолжать передачу запроса | 1xx: Informational (информационные) |
101 | Switching Protocols | переключение протоколов | С ервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade | |
102 | Processing | идёт обработка | запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме | |
200 | OK | хорошо | Запрос клиента обработан успешно и ответ сервера содержит затребованные данные | 2xx: Success (успешно) |
201 | Created | создано | Этот код состояния используется в случае создания нового URL. Вместе с этим кодом результата сервер выдает заголовок Location, который содержит информацию о том, куда были помещены новые данные | |
202 | Accepted | принято | Запрос принят, но обрабатывается не сразу. В теле содержимого ответа сервера может быть дана дополнительная информация о данной транзакции. Гарантии того, что сервер в конечном итоге удовлетворит запрос, нет, даже несмотря на то, что на момент приема запрос выглядел допустимым | |
203 | Non-Authoritative Information | информация не авторитетна | Информация в заголовке содержимого взята из локальной копии или у третьей стороны, а не с исходного сервера | |
204 | No Content | нет содержимого | Ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа броузер не должен обновлять свой документ. Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь щелкает на бесполезных или пустых участках изображения | |
205 | Reset Content | сбросить содержимое | Броузер должен очистить форму, используемую в данной транзакции, для дополнительных входных данных. Полезен для CGI-приложений, требующих ввода данных | |
206 | Partial Content | частичное содержимое | Сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range | |
207 | Multi-Status | многостатусный | сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности | |
226 | IM Used | использовано IM | заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования | |
300 | Multiple Choices | множество выборов | Затребованный URI обозначает более одного ресурса. Например, URI может обозначать документ, переведенный на несколько языков. В теле содержимого, возвращенном сервером, может находиться перечень более конкретных данных о том, как выбрать ресурс правильно | 3xx: Redirection (перенаправление) |
301 | Moved Permanently | перемещено навсегда | Документ уже не используется сервером, а ссылка перенаправляет на другую страницу | |
302 | Found | найдено | Запрошенный ресурс временно находится под другим адресом | |
303 | See Other | смотреть другое | Запрошенный ресурс находится под другим адресом и его следует запрашивать, используя метод GE T | |
304 | Not Modified | не изменялось | Это код ответа на заголовок lf-Modified-Since, если URI не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию | |
305 | Use Proxy | использовать прокси | Доступ к затребованному URI должен осуществляться через proxy-сервер, указанный в заголовке Location | |
307 | Temporary Redirect | временное перенаправление | Затребованный ресурс был временно переведен на другой адрес, который необходимо прописать в Location | |
400 | Bad Request | неверный запрос | Запрос не может быть понят сервером из-за некорректного синтаксиса | 4xx: Client Error (ошибка клиента) |
401 | Unauthorized | неавторизован | Для доступа к документу необходимо вводить пароль или быть зарегистрированным пользователем | |
402 | Payment Required | необходима оплата | Внутренняя ошибка или ошибка конфигурации сервера | |
403 | Forbidden | запрещено | Доступ к документу запрещен | |
404 | Not Found | не найдено | Документ по указанному URL не существует. Возможно, такой файл удален, а возможно, вы ошиблись при наборе URL в браузере или пошли по неверной ссылке | |
405 | Method Not Allowed | метод не поддерживается | Этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URL не поддерживается. (Например, при отправки POST данных на страницу, которая не является скриптом) | |
406 | Not Acceptable | не приемлемо | Ресурс, указанный клиентом по данному URL, существует, но не в том формате, который нужен клиенту. Вместе с этим кодом сервер выдает заголовки Content-Language, Content-Encoding и Content-Type | |
407 | Proxy Authentication Required | необходима аутентификация прокси | Proxy-сервер должен санкционировать запрос перед тем, как пересылать его. Используется с заголовком Proxy-Authenticate | |
408 | Request Timeout | истекло время ожидания | Этот код ответа означает, что клиент не передал полный запрос в течение некоторого установленного промежутка времени (который обычно задается в конфигурации сервера) и сервер разрывает сетевое соединение | |
409 | Conflict | конфликт | Данный запрос конфликтует с другим запросом или с конфигурацией сервера. Информацию о конфликте следует возвратить в информационной части ответа | |
410 | Gone | удалён | Затребованный ресурс был окончательно удален с сайта | |
411 | Length Required | необходима длина | Сервер отказывается принимать запрос без определенного заголовка Content-Length | |
412 | Precondition Failed | условие ложно | При проверке на сервере одного или более полей заголовка запроса обнаружено несоответствие (сбой или ошибка при обработке предварительного условия) | |
413 | Request Entity Too Large | размер запроса слишком велик | Сервер отказывается обрабатывать запрос потому, что размер запроса больше того, что может обработать сервер | |
414 | Request-URI Too Large | запрашиваемый URI слишком длинный | Сервер не будет обрабатывать запрос, потому что его URL слишком длинный. | |
415 | Unsupported Media Type | неподдерживаемый тип данных | Сервер отказывается обрабатывать запрос, потому что тело запроса имеет неподдерживаемый формат | |
416 | Requested Range Not Satisfiable | запрашиваемый диапазон не достижим | Сервер отказывается обрабатывать запрос, потому что значение поля Range в заголовке запроса указывает на недопустимый диапазон байтов | |
417 | Expectation Failed | ожидаемое неприемлемо | Сервер отказывается обрабатывать запрос, потому что значение поля Expect в заголовке запроса не соответствует ожиданиям | |
422 | Unprocessable Entity | необрабатываемый экземпляр | Сервер не в состоянии обработать один (или более) элемент запроса. | |
423 | Locked | заблокировано | Сервер отказывается обработать запрос, так как один из требуемых ресурсов заблокирован | |
424 | Failed Dependency | невыполненная зависимость | Сервер отказывается обработать запрос, так как один из зависимых ресурсов заблокирован | |
425 | Unordered Collection | неупорядоченный набор | посылается, если клиент послал запрос, обозначив положение в неотсортированной коллекции или используя порядок следования элементов, отличный от серверного[уточнить]. Введено в черновике по WebDAV Advanced Collections Protocol | |
426 | Upgrade Required | необходимо обновление | Сервер запросил апгрейд соединения до SSL, но SSL не поддерживается клиентом | |
449 | Retry With | повторить с | возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. В настоящий момент как минимум используется программой Microsoft Money | |
456 | Unrecoverable Error | некорректируемая ошибка | возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных | |
500 | Internal Server Error | внутренняя ошибка сервера | Сервер столкнулся с непредвиденным условием, которое не позволяет ему выполнить запрос | 5xx: Server Error (ошибка сервера) |
501 | Not Implemented | не реализовано | Сервер не поддерживает функциональные возможности, требуемые для выполнения запроса. Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечить его для любого ресурса | |
502 | Bad Gateway | плохой, ошибочный шлюз | Сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос | |
503 | Service Unavailable | сервис недоступен | Возникла ошибка из-за временной перегрузки или отключения на техническое обслуживание сервера | |
504 | Gateway Timeout | шлюз не отвечает | Сервер, при работе в качестве внешнего шлюза или прокси-сервера, своевременно не получил отклик от вышестоящего сервера, к которому он обратился, пытаясь выполнить запрос | |
505 | HTTP Version Not Supported | версия HTTP не поддерживается | Сервер не поддерживает или отказывается поддерживать версию HTTP-протокола, которая используется в сообщении запроса робота | |
506 | Variant Also Negotiates | вариант тоже проводит согласование | в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. Экспериментальное. Введено в RFC 2295 для дополнения протокола HTTP технологией Transparent Content Negotiation | |
507 | Insufficient Storage | переполнение хранилища | Сервер не может обработать запрос из-за недостатка места на диске | |
508 | Loop Detected | обнаружена петля | Сервер не может обработать запрос из-за недостатка памяти | |
509 | Bandwidth Limit Exceeded | исчерпана пропускная ширина канала | используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён | |
510 | Not Extended | не расширено | Сервер не может обработать запрос из-за того, что запрашиваемое расширение не поддерживается |
Сообщения сервера на этом сайте
Кроме нескольких сообщений об ошибках, которые в том или ином виде попадают на глаза пользователям Интернет, существуют еще и сообщения интересные владельцам или веб-мастерам сайтов. Эти сообщения которые извлекаются из лог файлов программы анализа статистики сайта, например у меня это AwStats .
Ниже, в таблице 2, я привожу их с описаниями и долей в трафике всех сообщений.
Status-Code | Статус | количество | доля % | Примечание |
404 | Document Not Found | 4044 | 53.3 % | самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы. |
403 | Forbidden | 1654 | 21.8 % | сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401 или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае клиенту следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. |
206 | Partial Content | 1208 | 15.9 | сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. |
302 | Moved temporarily (redirect) | 571 | 7.5 | запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. |
405 | Method not allowed | 70 | 0.9 | указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501. |
301 | Moved permanently (redirect) | 35 | 0.4 | запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода. |
412 | Precondition failed | 1 | 0 | возвращается, если ни одно из условных полей заголовка[неизвестный термин] запроса не было выполнено. |
Итого сообщений | 7583 | из 345246 просмотров |
Что делать посетителю?
- пару раз перезагрузить страницу (нажать на символ ⟳ или клавишу клавиатуры F5 ),
- попробовать найти ошибки в написании URL,
- воспользоваться поиском по сайту,
- если возможно, подняться по структуре URL на ступень выше и посмотреть там
- если страница осталась в основном индексе поисковой системе (чаще у Яндекса, так как он медленнее реагирует на изменения на сайтах), можно взглянуть на её сохранённую копию. Для просмотра результатов определённого проекта, в строку поиска нужно ввести
- если документ когда-то существовал и был разрешён для сканирования, то его копию на конкретную дату часто можно найти в вебархиве (в России периодически блокируется Роскомнадзором),
- если страница существует, но запрещена к показу, можно воспользоваться услугами анонимайзера или изменить прокси (по тому же принципу работает расширение браузера friGate). Однако из-за того, что доступ осуществляется через посредника, вводить пароли небезопасно.
- описать разработчику (службе поддержки) сайта проблему, вероятно, так он сможет предпринять шаги по её устранению или предупредить других пользователей.
-
.
- при смене домена сайта или URL страницы настроить перенаправление (301 редирект) со старых URL на новые. С удалённых или ошибочных URL, на которые часто переходят посетители (можно узнать из статистики Google Analytics) или на которые ссылаются авторитетные источники (можно узнать из ошибок сканирования Яндекса/Google) сделать перенаправление на похожие существующие материалы.
- не делать перенаправление со всех не найденных веб-страниц на Главную без желания человека, это не поможет ему найти искомую информацию.
- чтобы посетитель вместо белой страницы с надписью «Not Found» или страницы с реквизитами хостера видел HTML-страницу сайта с рекомендуемыми навигационными вариантами, нужно в файле .htaccess добавить строку
Какой должна быть 404 страница
- ссылку на Главную страницу и значимые разделы сайта,
- поиск по сайту,
- красиво оформленные блоки с акциями, рекомендациями, популярными статьями,
- форму обратной связи: «Вы можете обратиться к системному администратору сайта и описать проблему».
Вот, например, на сайте Hotels.com, создаётся впечатление, что идёт диалог
Информационное сообщение 404 — не только ошибка, но и праздник
4.04 все причастные ко всемирной паутине, и веб-мастеры в частности отмечают день Интернета (День святого Исидора Севильского — покровителя сети).
В этот день хочется поздравить всех, причастных к функционированию данной инфраструктуры, без которой многие уже и не представляют современное общество.
Не стану перечислять того множества профессий, которое трудится на благо Сети, ибо для простого обывателя мы по прежнему остаемся «компьютерщиками».
Хочется просто остановиться на историях возникновения данного сообщения(официальных, альтернативных, своих).
Причастные наверняка в курсе, что 404 — это код состояния из трех цифр, корнями уходящий в лихие 90-е.
Версия HTTP 0.9, которая появилась в 1992 году, включала в себя коды состояния из трёх цифр.
Первая обозначала вид сообщения: 1 — информационное, 2 — успех, 3 — перенаправление, 4 — ошибка клиента, 5 — ошибка сервера.
Вторая цифра обозначала подгруппу сообщений, третья — конкретное сообщение в этой группе.
Коды вроде 200 («хорошо») и 304 («не изменилось») мы никогда не видим, потому что вместо этих цифр браузеры отображают содержимое страниц.
А вот ошибка 404 («не найдено») хорошо всем известна.
С ней сталкивался любой пользователь, кто неправильно вводил адрес страницы в строку браузера или переходил по ссылке на несуществующую страницу.
Но это скучная официальная версия.
С ошибкой 404 связана городская легенда.
Якобы в своё время в офисе CERN на четвёртом этаже была комната 404, где находился центральный сервер.
Там сидели несколько человек, которые вручную обрабатывали приходившие запросы.
Если запрос был ошибочным, то появлялось сообщение «Room 404: file not found».
В память о героях, работавших до поздней ночи в стенах CERN, 404-я комната сохранилась как «место Web».
Ни одна другая комната больше не используется для WWW.
Я решил тоже попрактиковаться на литературной стезе и сначала получилось следующее:
В огромном машинном зале вычислительного центра все было подчинено строгому порядку.
И вот в 40 ряду четвертым с краю (запомните эти цифры!) трудился скромный веб-сервер.
Он работал настолько хорошо (uptime 99.99%), что на него просто перестали обращать внимание.
Соседним машинам добавляли памяти, объединяли в кластера и увеличивали емкость жестких дисков, а маленькому серверу не доставалось ничего.
Но он не обижался, а продолжал честно выполнять свою работу, хотя и запоминал все апгрейды, которые делались компьютерам в машинном зале.
И вот, когда 403 разом была замена подающего лотка у принтера, маленькому серверу стало действительно обидно.
Он так разволновался, что даже поднялась температура процессора(запомните этот факт)!
И вот, дабы обратить на себя внимание, он решил подать Людям весточку о себе, но единственное, что он знал — это свой номер и номер ряда!
Поэтому, на все приходящие запросы стал отвечать сообщением — 40 ряд, 4 сервер, либо просто 404, ибо машина что стояла слева красовалась номером 403(и новым модулем памяти), а машина справа была под номером 405, и всем хвалилась новым массивом RAID.
Сообщение родилось совершенно бесполым, но у дежурной смены в тот день было плохое настроение, и они нарекли его ошибкой!
Так маленький сервер получил новый процессор, а сообщение — пол.
По совершенно случайному стечению обстоятельств все это произошло 4 апреля, а как мы знаем рожденные под знаком Овна имеют весьма норовливый характер.
Вот так и бродит теперь по веб-серверам Ошибка 404, требуя дать ей имя и отменить позорный статус, но администраторы почему-то бросаются искать проблему в железе/cофте.
Итак, отныне нарекаю сообщение 404 Наташей, Наталкою или просто Nata!
Но как Вы могли заметить, заглавие украшает совсем другая барышня, а следовательно должен «выстрелить» и другой вариант.
В тридесятом царстве, в тридевятом государстве, нет, не то… Давным-давно в далекой Галактике, снова не так .
Дело было в те самые 90-е годы когда пронхаб-а и в помине не было, а сотрудники организации CERN только работали над разработкой стандарта HTTP.
Так вот, пикантные фото в цифровом виде блуждали просторами FIDO и BBS-ок даже тогда.
При этом модемы 4800 Бит! заметьте в секунду считались весьма неплохим вариантом.
В общем, все мы люди, и сотрудники вышеуказанной организации — тоже, а потому складывали «малинку» в папку с именем 404.
При этом ссылкой делились с менее занятыми коллегами, а дабы не палиться перед начальством и была придумана данная ошибка — page not found!
Кстати, Ошибка 404 означает, что запрашиваемый ресурс может быть доступен в будущем, что однако не гарантирует наличие прежнего содержания.
Данная формулировка косвенно подтверждает последнюю версию.
В завершение, хочу пожелать всем поменьше видеть сообщение 404 на своих экранах!