В компьютерных сетевых коммуникациях сообщение об ошибке HTTP 404 , 404 not found , 404 , 404 error , page not found или file not found является стандартным кодом ответа протокола передачи гипертекста (HTTP) , указывающим на то, что браузер смог связаться с данным сервером , но сервер не смог найти то, что было запрошено. Ошибка также может использоваться, когда сервер не желает раскрывать, есть ли у него запрошенная информация. [1]
Сервер хостинга веб-сайта обычно генерирует веб-страницу «404 Not Found», когда пользователь пытается перейти по неработающей или неработающей ссылке ; поэтому ошибка 404 является одной из самых узнаваемых ошибок, встречающихся во Всемирной паутине .
При общении по HTTP сервер должен ответить на запрос, например, запрос веб-браузера на веб-страницу , с помощью числового кода ответа и необязательного, обязательного или запрещенного (в зависимости от кода статуса) сообщения. В коде 404 первая цифра указывает на ошибку клиента, например, неправильно введенный унифицированный указатель ресурса (URL). Следующие две цифры указывают на конкретную обнаруженную ошибку. Использование трехзначных кодов в HTTP похоже на использование таких кодов в более ранних протоколах, таких как FTP и NNTP . На уровне HTTP за кодом ответа 404 следует понятная человеку «фраза причины». Спецификация HTTP предлагает фразу «Not Found» [1] , и многие веб-серверы по умолчанию выдают HTML-страницу, которая включает как код 404, так и фразу «Not Found».
Ошибка 404 часто возвращается, когда страницы были перемещены или удалены. В первом случае лучше использовать сопоставление URL или перенаправление URL , возвращая ответ 301 Moved Permanently, который можно настроить в большинстве файлов конфигурации сервера, или через перезапись URL ; во втором случае следует возвращать 410 Gone. Поскольку эти два варианта требуют специальной конфигурации сервера, большинство веб-сайтов не используют их.
Ошибки 404 не следует путать с ошибками DNS , которые появляются, когда указанный URL ссылается на имя сервера, которого не существует. Ошибка 404 указывает на то, что сам сервер был найден, но сервер не смог получить запрошенную страницу.
Термин «404 Not Found» был придуман создателем HTTP Тимом Бернерсом-Ли , который объяснил в интервью 1998 года, что он хотел сделать сообщение об ошибке «слегка извиняющимся». [2] Он также сказал, что рассматривал возможность использования вместо этого «400 Bad Request», но решил, что это слишком расплывчато и технично. [2]
Первый задокументированный случай появления ошибки 404 на веб-странице произошел в 1993 году, когда пользователь попытался получить доступ к странице о веб-браузере Mosaic на сайте NCSA. Страница была перемещена в другое место, но ссылка не была обновлена. [3] Пользователь сообщил об ошибке команде NCSA, которая исправила ссылку и добавила юмористическое сообщение на свою страницу 404: «К сожалению, запрошенного вами документа здесь нет. Возможно, вам следует попробовать что-то другое». [2]
С тех пор ошибки 404 стали одной из самых распространенных и узнаваемых ошибок в Интернете. Многие веб-сайты настраивают свои страницы 404 с помощью креативного дизайна, сообщений или функций, чтобы развлекать или помогать своим посетителям. Например, страница 404 Google показывает сломанного робота и ссылку на его домашнюю страницу, [4] в то время как страница 404 GitHub показывает случайное изображение звездного поля параллакса и ссылку на его страницу статуса. [5] Некоторые веб-сайты также используют свои страницы 404, чтобы продемонстрировать индивидуальность своего бренда, юмор или социальные причины. Например, страница 404 Lego показывает минифигурку Lego Эммета вместе с юмористическим сообщением, [6] Amazon показывает изображение собаки, [7] Peugeot показывает изображение своей модели 404 , [8] а RTÉ показывает изображение Боско . [9] [10]
Некоторые веб-сайты сообщают об ошибке «не найдено», возвращая стандартную веб-страницу с кодом ответа «200 OK», ложно сообщая, что страница загружена правильно; это известно как soft 404. Термин «soft 404» был введен в 2004 году Зивом Бар-Йоссефом и др . [11]
Мягкие 404 являются проблематичными для автоматизированных методов обнаружения того, не работает ли ссылка. Некоторые поисковые системы, такие как Yahoo и Google , используют автоматизированные процессы для обнаружения мягких 404. [12] Мягкие 404 могут возникать в результате ошибок конфигурации при использовании определенного программного обеспечения HTTP-сервера, например, с программным обеспечением Apache , когда документ об ошибке 404 (указанный в файле .htaccess ) указан как абсолютный путь (например, http://example.com/error.html), а не относительный путь (/error.html). [13] Это также может быть сделано намеренно, чтобы заставить некоторые браузеры (например, Internet Explorer ) отображать настраиваемое сообщение об ошибке 404 вместо того, чтобы заменять то, что подается, на специфичное для браузера «дружественное» сообщение об ошибке (в Internet Explorer это поведение срабатывает, когда подается 404, а полученный HTML короче определенной длины, и может быть вручную отключено пользователем).
Существуют также «мягкие ошибки 3XX», когда контент возвращается со статусом 200, но поступает с перенаправленной страницы, например, когда отсутствующие страницы перенаправляются на корневую/домашнюю страницу домена.
Некоторые прокси-серверы генерируют ошибку 404, когда более правильным был бы код ошибки в диапазоне 500. Если прокси-сервер не может удовлетворить запрос на страницу из-за проблемы с удаленным хостом (например, сбои разрешения имени хоста или отказ в TCP-подключениях), это следует описывать как внутреннюю ошибку сервера 5xx, но вместо этого может выдавать 404. Это может сбить с толку программы, которые ожидают и действуют в соответствии с определенными ответами, поскольку они больше не могут легко отличить отсутствующий веб-сервер от отсутствующей веб-страницы на присутствующем веб-сервере.
В июле 2004 года британский провайдер телекоммуникационных услуг BT Group развернул систему блокировки контента Cleanfeed , которая возвращает ошибку 404 на любой запрос контента, который организация Internet Watch Foundation определила как потенциально незаконный . [14] Другие интернет-провайдеры возвращают ошибку HTTP 403 «запрещено» в тех же обстоятельствах. [15] Практика использования поддельных ошибок 404 в качестве средства сокрытия цензуры также была зарегистрирована в Таиланде [16] и Тунисе . [17] В Тунисе, где цензура была жесткой до революции 2011 года , люди узнали о природе поддельных ошибок 404 и создали воображаемого персонажа по имени « Аммар 404 », который представляет собой «невидимого цензора». [18]
Программное обеспечение веб-сервера, разработанное корпорацией Microsoft, Microsoft Internet Information Services (IIS), возвращает набор кодов подстатуса с ответами 404. Коды подстатуса имеют форму десятичных чисел, добавленных к коду статуса 404. Коды подстатуса официально не признаются IANA и не возвращаются серверами, не принадлежащими Microsoft.
Серверы IIS 7.0, IIS 7.5 и IIS 8.0 компании Microsoft определяют следующие коды подстатуса HTTP для указания более конкретной причины ошибки 404:
Веб-серверы обычно можно настроить для отображения настраиваемой страницы ошибки 404, включая более естественное описание, брендинг родительского сайта, а иногда и карту сайта, форму поиска или виджет страницы 404. Фраза уровня протокола, которая скрыта от пользователя, редко настраивается. Internet Explorer , однако, не будет отображать настраиваемые страницы, если они не больше 512 байт, предпочитая вместо этого отображать «дружественную» страницу ошибки. [19] Google Chrome включает похожую функциональность, где 404 заменяется альтернативными предложениями, сгенерированными алгоритмами Google, если размер страницы меньше 512 байт. [20] Другая проблема заключается в том, что если страница не предоставляет значок и существует отдельная настраиваемая страница 404, при каждом просмотре страницы будет генерироваться дополнительный трафик и более длительное время загрузки. [21] [22]
Многие организации используют страницы ошибок 404 как возможность привнести юмор в то, что в противном случае могло бы быть серьезным веб-сайтом. Например, Metro UK показывает белого медведя на скейтборде, а агентство веб-разработки Left Logic имеет простую программу для рисования. [23] Во время всеобщей избирательной кампании в Великобритании в 2015 году все основные политические партии использовали свои страницы 404, чтобы либо нацелиться на политических оппонентов, либо показать соответствующую политику потенциальным сторонникам. [24] В Европе проект NotFound , созданный несколькими европейскими организациями, включая Missing Children Europe и Child Focus , призывает операторов сайтов добавлять фрагмент кода для обслуживания настраиваемых страниц ошибок 404 [25], которые предоставляют данные о пропавших детях . [26]
В то время как многие веб-сайты отправляют дополнительную информацию в сообщении об ошибке 404, например, ссылку на домашнюю страницу веб-сайта или поле поиска, некоторые также пытаются найти нужную веб-страницу, которую хотел пользователь. Для некоторых систем управления контентом (CMS) доступны расширения, позволяющие это сделать. [27]
Существует ряд инструментов, которые сканируют веб-сайт, чтобы найти страницы, которые возвращают коды статуса 404. Эти инструменты могут быть полезны для поиска ссылок, которые существуют на определенном веб-сайте. Ограничением этих инструментов является то, что они находят ссылки только на одном определенном веб-сайте и игнорируют 404, возникающие из-за ссылок на других веб-сайтах. В результате эти инструменты пропускают 83% 404 на веб-сайтах. [28] Один из способов обойти это — найти ошибки 404, анализируя внешние ссылки. [29]
Одним из наиболее эффективных способов обнаружения ошибок 404 является использование Google Search Console , Google Analytics или программного обеспечения для сканирования.
Другим распространенным методом является отслеживание трафика на страницы 404 с помощью анализа файла журнала. [30] Это может быть полезно для понимания того, чего пользователи 404 достигли на сайте. Другим методом отслеживания трафика на страницы 404 является использование инструментов отслеживания трафика на основе JavaScript. [31]