Ошибка 404
Ошибка 404 (англ. 404 Not Found, HTTP 404, 404 not found, 404 error, страница не найдена, файл не найден) — стандартный код ответа в протоколе HTTP, указывающий, что веб-браузер смог установить связь с целевым сервером в компьютерной сети, но сам сервер не нашёл запрошенный ресурс. Иногда сервер может возвращать данный код, чтобы не раскрывать факт наличия либо отсутствия конкретной информации[1].
На практике сервер часто создаёт страницу с ошибкой «404 Not Found» при попытке пользователя перейти по «битой» или несуществующей ссылке (битая ссылка). Таким образом, ошибка 404 — одна из самых узнаваемых проблем во Всемирной паутине.
Общее описание
При взаимодействии по протоколу HTTP сервер обязан отвечать на запрос (например, браузера к веб-странице) числовым кодом состояния и сопутствующим сообщением (обязательным или необязательным в зависимости от типа кода). В коде 404 первая цифра (4) указывает на ошибку на стороне клиента (например, неправильное написание URL), а две последующие — на конкретную ошибку. Протокол HTTP применяет трёхзначные коды по аналогии с более старыми протоколами, такими как FTP и NNTP. После числового кода в спецификации HTTP рекомендуется использовать поясняющую фразу «Not Found» («Не найдено»)[1], и большинство веб-серверов по умолчанию возвращают HTML-страницу, где указаны и код 404, и фраза пояснения.
Ошибка 404 часто возвращается, если страница была перемещена или удалена. В случае переноса рекомендуется использовать механизм постоянного перенаправления (код 301 Moved Permanently), который настраивается в конфигурационных файлах сервера (или через переопределение URL), а при удалении ресурса разумнее возвращать код 410 Gone. Оба этих метода требуют специальной настройки сервера, поэтому на многих сайтах по умолчанию применяется 404.
Ошибку 404 не стоит путать с ошибками разрешения доменных имён (DNS), когда по URL не удаётся найти сервер. В случае 404 сервер найден, но ресурс на нём — нет.
Мягкая ошибка 404
Некоторые сайты возвращают стандартную страницу с сообщением «не найдено», но при этом в ответе указывается успешный код 200 OK, а не ошибка 404. Такой подход называется мягкой ошибкой 404. Термин «мягкая ошибка 404» был предложен в 2004 году Зивом Бар-Йосефом и соавторами[2].
Мягкие 404 создают проблемы для автоматических инструментов поиска битых ссылок. Поисковые системы, такие как Yahoo и Google, применяют собственные методы обнаружения мягких 404[3]. Часто мягкие 404 возникают из-за ошибок конфигурации, например, в Apache при указании ErrorDocument 404 абсолютным путём (http://example.com/error.html) вместо относительного (/error.html) в файле .htaccess[4]. Иногда разработчики специально вызывают подобное поведение, чтобы, например, разные браузеры (такие как Internet Explorer) отображали собственные или специальные сообщения об ошибке (например, в IE такой механизм включается при коротком ответе сервера и может быть отключён пользователем вручную).
Существуют также «мягкие ошибки 3XX», когда при статусе 200 ответ содержит перенаправляемый контент, например, если несуществующая страница переправляется в корень сайта.
Некоторые прокси-серверы возвращают ошибку 404 там, где правильнее было бы применить код из диапазона 500 (ошибки сервера). Если прокси не может выполнить запрос из-за ошибки на стороне удалённого хоста (например, невозможность разрешить DNS-имя или отказ во соединении TCP), то вместо этого должна использоваться ошибка 5xx. Неверное применение 404 может приводить к путанице — приложения перестают различать отсутствие сервера и отсутствие страницы на реально существующем сервере.
В июле 2004 года британский телеком-провайдер BT Group внедрил систему цензурирования Cleanfeed, которая возвращает ошибку 404 при попытке доступа к контенту, признанному потенциально незаконным по данным Internet Watch Foundation[5]. В других случаях провайдеры возвращают ошибку 403 «доступ запрещён»[6]. Использование заведомо ложных 404 как метода сокрытия цензуры отмечалось также в Таиланде[7] и Тунисе. В Тунисе до революции 2011 года широкое распространение получила фигура Аммара 404 — «невидимый цензор», созданный по ассоциации с ошибкой 404[8].
Коды подстатуса 404 в Microsoft Internet Server
Веб-сервер Microsoft Internet Information Services (IIS) возвращает набор дополнительных подстатусов ошибок 404, которые записываются в виде десятичных чисел после основного кода. Эти подстатусы официально не признаны IANA и не используются не-Microsoft-серверами.
Серверы IIS 7.0, 7.5 и 8.0 поддерживают следующие варианты подстатусов ошибки 404:
- 404.0 — Не найдено.
- 404.1 — Сайт не найден.
- 404.2 — Ограничение ISAPI или CGI.
- 404.3 — Ограничение по типу MIME.
- 404.4 — Не настроен обработчик.
- 404.5 — Отклонено настройкой фильтрации запроса.
- 404.6 — Неподдерживаемый HTTP-метод.
- 404.7 — Отклонено по расширению файла.
- 404.8 — Скрытое пространство имён.
- 404.9 — Скрыт атрибут файла.
- 404.10 — Слишком длинный заголовок запроса.
- 404.11 — Запрос содержит двойную escape-последовательность.
- 404.12 — Запрос содержит символы с высокими битами.
- 404.13 — Слишком большой размер содержимого.
- 404.14 — Слишком длинный URL запроса.
- 404.15 — Слишком длинная строка запроса.
- 404.16 — DAV-запрос к статическому обработчику файла.
- 404.17 — Динамический контент подключён к статическому обработчику через общий mapping MIME.
- 404.18 — Отклонено последовательность в строке запроса.
- 404.19 — Отклонено правилом фильтрации.
- 404.20 — Слишком много сегментов URL.
Пользовательские страницы ошибок
Веб-серверы обычно позволяют настроить собственную страницу ошибки 404, где может быть добавлено более подробное описание, элементы фирменного стиля сайта, карта сайта, форма поиска или виджеты. Протокольная фраза на низком уровне (обычно «Not Found») редко изменяется. В Internet Explorer пользовательские страницы не отображаются, если они меньше 512 байт, вместо этого браузер показывает свой «дружелюбный» шаблон ошибки[9]. В Google Chrome реализовано подобное поведение — если страница меньше 512 байт, браузер подставляет свои подсказки на основе алгоритмов Google[10]. Если для сайта не задана значок-сайт, а отдельная страница 404 существует, это может приводить к дополнительному трафику и увеличению времени загрузки каждой страницы[11][12].
Многие организации используют страницы ошибки 404 для добавления юмористических или интерактивных элементов. Например, Metro UK помещает на такую страницу изображение полярного медведя на скейтборде, а компания Left Logic создала простую программу-рисовалку[13]. Во время выборов в Великобритании 2015 года все ведущие партии использовали свои 404-страницы для критики соперников или размещения информации о программе. В Европе проект NotFound (инициированный Missing Children Europe, Child Focus и др.) предлагает добавлять на 404-страницы специальный код для отображения информации о пропавших детях[14].
Многие сайты добавляют в ответ на ошибку и дополнительные ссылки, например, на главную страницу или встроенный поиск. Для некоторых CMS существуют расширения, которые пытаются определить наиболее вероятную целевую страницу для пользователя[15].
Мониторинг ошибок 404
Существуют различные инструменты, которые позволяют автоматически обходить сайт и выявлять страницы, возвращающие ошибку 404. Как правило, такие программы обнаруживают лишь внутренние битые ссылки, а большая часть (до 83 % ошибок 404 на сайте) генерируется внешними ссылками[16]. Чтобы выявить такие ошибки, необходимо анализировать внешние ссылки[17].
Один из самых эффективных способов обнаружения 404 — использование Google Search Console, Google Analytics или специализированных обходчиков сайта.
Другой метод — анализ логов трафика к 404-страницам[18]. Также используются JavaScript-решения для отслеживания таких событий[19].
Примечания
- ↑ 1 2 HTTP/1.1 Semantics and Content: 404 Not Found (англ.). Internet Engineering Task Force (IETF). IETF (июнь 2014). Дата обращения: 22 июня 2024. Архивировано 14 сентября 2017 года.
- ↑ Ziv Bar-Yossef. Sic transit gloria telae // Proceedings of the 13th international conference on World Wide Web : [англ.] / Ziv Bar-Yossef, Andrei Z. Broder, Ravi Kumar … [et al.]. — 2004. — P. 328–337. — ISBN 978-1581138443. — doi:10.1145/988672.988716.
- ↑ Why is your crawler asking for strange URLs that have never existed on my site? (англ.). Yahoo Ysearch Help page. Дата обращения: 22 июня 2024. Архивировано 15 июля 2014 года.
- ↑ Farewell to soft 404s (англ.). Google Official Blog. Google. Дата обращения: 22 июня 2024.
- ↑ Cleanfeed: факты (англ.). Publicaffairs.linx.net. LINX (10 сентября 2004). Дата обращения: 22 июня 2024. Архивировано 13 мая 2011 года.
- ↑ DEMON – Ошибка 403 (англ.). Дата обращения: 22 июня 2024.
- ↑ Sambandaraksa, Don. The old fake "404 Not Found" routine - Dead link (англ.) (18 February 2009). Дата обращения: 22 июня 2024.
- ↑ Антицензурное движение в Тунисе: креатив, смелость и надежда! (англ.). Global Voices Advocacy (27 мая 2010). Дата обращения: 22 июня 2024.
- ↑ Дружелюбные HTTP-страницы ошибок (англ.). msdn.com (18 августа 2010). Дата обращения: 22 июня 2024. Архивировано 2 декабря 2010 года.
- ↑ Issue 1695: Chrome needs option to turn off "Friendly 404" displays (англ.). bugs.chromium.org. Дата обращения: 22 июня 2024.
- ↑ Heng, Christopher Что такое Favicon.ico и как создать значок для сайта (англ.). The Site Wizard (7 сентября 2008). Дата обращения: 22 июня 2024.
- ↑ Ошибка "favicon.ico not found" (англ.). Internet Folks (3 августа 1999). Дата обращения: 22 июня 2024.
- ↑ От медведей на скейте до пропавших детей: сила ошибки 404 Not Found (англ.), Metro (6 June 2011). Дата обращения: 22 июня 2024.
- ↑ Notfound.org (англ.). notfound. Архивировано 2 сентября 2014 года.
- ↑ Swenson, Sahala Как сделать страницы 404 более полезными (англ.). Official Google Webmaster Central Blog. Google (19 августа 2008). Дата обращения: 22 июня 2024.
- ↑ Источники, приводящие к ошибкам 404 (англ.). SpringTrax. Дата обращения: 22 июня 2024.
- ↑ Cushing, Anne Подход к выявлению 404-страниц, которые стоит сохранять (англ.). Search Engine Land (2 апреля 2013). Дата обращения: 22 июня 2024.
- ↑ Мониторинг и предотвращение ошибок 404 (англ.). 404errorpages.com. Дата обращения: 22 июня 2024.
- ↑ Понимание ошибок 404 (англ.). SpringTrax.com. Дата обращения: 22 июня 2024.
Литература
- Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, Section 6.5.4 404 Not Found (англ.). Internet Engineering Task Force. IETF. Дата обращения: 22 июня 2024. Архивировано 14 сентября 2017 года.
- Ziv Bar-Yossef. Sic transit gloria telae // Proceedings of the 13th international conference on World Wide Web : [англ.] / Ziv Bar-Yossef, Andrei Z. Broder, Ravi Kumar … [et al.]. — 2004. — P. 328–337. — ISBN 978-1581138443. — doi:10.1145/988672.988716.
Ссылки
- Более полезная страница 404
- Документация ErrorDocument — настройка собственных сообщений об ошибке для Apache 2.0
- «404: Not Found» — песня-«филк» о коде ошибки