Ошибка 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].
Примечания
Литература
- 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» — песня-«филк» о коде ошибки