Введение

Сообщение об ошибке в интернете

В компьютерных сетевых коммуникациях, код ответа HTTP 404, «404 не найдено», 404, «ошибка 404», «страница не найдена» или «файл не найден» является стандартным кодом ответа протокола передачи гипертекста (HTTP), указывающим на то, что браузер смог установить связь с сервером, но сервер не смог найти запрошенный ресурс. Эта ошибка также может использоваться, когда сервер не хочет сообщать, располагает ли он запрошенной информацией. Веб-сервер обычно генерирует веб-страницу «404 не найдено», когда пользователь пытается перейти по нерабочей или устаревшей ссылке; таким образом, ошибка 404 является одной из наиболее узнаваемых ошибок в World Wide Web.

Обзор

При взаимодействии по протоколу HTTP сервер обязан отвечать на запрос, например, запрос веб-браузера на веб-страницу, числовым кодом ответа и сопровождающим его сообщением, которое может быть необязательным, обязательным или запрещенным (в зависимости от кода статуса). В коде 404 первая цифра указывает на ошибку со стороны клиента, например, опечатку в Uniform Resource Locator (URL). Следующие две цифры обозначают конкретную возникшую ошибку. Использование HTTP трехзначных кодов аналогично использованию подобных кодов в более ранних протоколах, таких как FTP и NNTP. На уровне HTTP код ответа 404 сопровождается удобочитаемой "фразой причины". В спецификации HTTP предлагается фраза "Not Found" ("Не найдено"). Также было сказано, что рассматривалась возможность использования "400 Bad Request", но было решено, что она слишком расплывчата и технична. Пользователь сообщил об ошибке команде NCSA, которая исправила ссылку и добавила юмористическое сообщение на свою страницу 404: "К сожалению, запрошенный вами документ отсутствует. Возможно, вам стоит поискать его в другом месте". В то время как страница 404 на GitHub отображает случайное изображение поля параллаксных звезд и ссылку на страницу статуса. Некоторые веб-сайты также используют свои страницы 404 для демонстрации индивидуальности бренда, юмора или поддержки социальных инициатив. Например, на странице 404 Lego показана минифигурка Lego Emmet с юмористическим сообщением, Amazon отображает изображение собаки, Peugeot – фотографию модели 404, а RTÉ – изображение Боско.

Небольшие ошибки 404

Некоторые веб-сайты сообщают об ошибке "не найдено", возвращая стандартную веб-страницу с кодом ответа "200 OK", ложно сообщая об успешной загрузке страницы; это известно как мягкий 404. Термин "мягкий 404" был введен в 2004 году Зивом Бар Йосефом и др. Мягкие 404 создают проблемы для автоматизированных методов определения нерабочих ссылок. Некоторые поисковые системы, такие как Yahoo и Google, используют автоматизированные процессы для обнаружения мягких 404. Мягкие 404 могут возникать из-за ошибок конфигурации при использовании определенного программного обеспечения HTTP-сервера, например Apache, когда документ об ошибке 404 (указанный в файле .htaccess) задан как абсолютный путь (например, http://example.com/error.html) вместо относительного пути (/error.html). Это также может быть сделано намеренно, чтобы заставить некоторые браузеры (например, Internet Explorer) отображать пользовательское сообщение об ошибке 404, а не заменять возвращаемый контент на специфическое "дружественное" сообщение об ошибке, предоставляемое браузером (в Internet Explorer такое поведение активируется при получении 404, если полученный HTML-код короче определенной длины, и может быть отключено пользователем вручную). Существуют также "мягкие 3XX" ошибки, когда контент возвращается со статусом 200, но получен с перенаправленной страницы, например, когда отсутствующие страницы перенаправляются на главную страницу домена.

Прокси-серверы

Некоторые прокси-серверы выдают ошибку 404, когда более корректным был бы код ошибки из диапазона 500. Если прокси-сервер не может выполнить запрос страницы из-за проблем с удалённым хостом (например, сбоев разрешения имени хоста или отказа в установке TCP-соединения), это следует описывать как ошибку сервера 5xx, однако вместо этого может быть возвращена ошибка 404. Это может ввести в заблуждение программы, которые ожидают и обрабатывают конкретные ответы, поскольку им становится сложнее различать недоступный веб-сервер и отсутствующую веб-страницу на работающем веб-сервере.

Намеренные 404

В июле 2004 года британский телекоммуникационный провайдер BT Group внедрил систему блокировки контента Cleanfeed, которая возвращает ошибку 404 на любой запрос контента, признанного потенциально незаконным Internet Watch Foundation. Другие интернет-провайдеры в аналогичных случаях возвращают HTTP 403 "запрещено". О практике использования фиктивных ошибок 404 для маскировки цензуры также сообщалось в Таиланде и Тунисе. В Тунисе, где цензура была особенно строгой до революции 2011 года, люди осознали природу этих фиктивных ошибок 404 и создали вымышленного персонажа по имени "Аммар 404", символизирующего "невидимого цензора".

Коды ошибок подстатуса Microsoft Internet Server 404

Программное обеспечение веб-сервера, разработанное Microsoft, Microsoft Internet Information Services (IIS), возвращает набор кодов подстатуса вместе с ответами 404. Коды подстатуса представляются в виде десятичных чисел, добавляемых к коду статуса 404. Эти коды подстатуса не признаны официально IANA и не возвращаются серверами других производителей.

Коды подстатуса

Серверы IIS 7.0, IIS 7.5 и IIS 8.0 от Microsoft определяют следующие коды подстатуса HTTP для указания более конкретной причины ошибки 404:

404.0 – Не найдено. 404.1 – Сайт не найден. 404.2 – Ограничение ISAPI или CGI. 404.3 – Ограничение типа MIME. 404.4 – Обработчик не настроен. 404.5 – Отказано конфигурацией фильтрации запросов. 404.6 – Запрещенный метод (Verb). 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 – Динамический контент сопоставлен с обработчиком статических файлов через wildcard MIME-сопоставление. 404.18 – Запрещена последовательность строки запроса. 404.19 – Отказано правилом фильтрации. 404.20 – Слишком много сегментов URL.

Страницы ошибок

Веб-серверы обычно могут быть настроены для отображения пользовательской страницы ошибки 404, включая более понятное описание, фирменный стиль основного сайта, а иногда и карту сайта, форму поиска или виджет страницы 404. Фраза уровня протокола, скрытая от пользователя, настраивается редко. Однако Internet Explorer не будет отображать пользовательские страницы, если их размер не превышает 512 байт, вместо этого отображая "дружелюбную" страницу ошибки. Google Chrome реализовал аналогичную функцию: если страница меньше 512 байт, ошибка 404 заменяется альтернативными предложениями, сгенерированными алгоритмами Google. Другая проблема заключается в том, что если страница не содержит фавикон, а существует отдельная пользовательская страница 404, то при каждом просмотре страницы будет генерироваться дополнительный трафик и увеличиваться время загрузки. Многие организации используют страницы ошибок 404 как возможность добавить юмор на сайт, который в противном случае может быть серьезным. Например, Metro UK показывает белого медведя на скейтборде, а веб-агентство Left Logic предлагает простую программу для рисования. Во время всеобщих выборов в Великобритании в 2015 году основные политические партии использовали свои страницы 404, чтобы либо критиковать политических оппонентов, либо демонстрировать свою политику потенциальным избирателям. В Европе проект NotFound, созданный несколькими европейскими организациями, включая Missing Children Europe и Child Focus, призывает владельцев сайтов добавлять фрагмент кода для отображения пользовательских страниц ошибок 404, содержащих информацию о пропавших детях. Многие веб-сайты отправляют дополнительную информацию в сообщении об ошибке 404, например, ссылку на главную страницу сайта или поле поиска, а некоторые даже пытаются найти нужную пользователю веб-страницу. Для некоторых систем управления контентом (CMS) существуют расширения, позволяющие это делать.

Отслеживание ошибок 404

Существует ряд инструментов, которые обходят веб-сайт для поиска страниц, возвращающих код состояния 404. Эти инструменты могут быть полезны для обнаружения ссылок, расположенных внутри конкретного веб-сайта. Однако их ограничение заключается в том, что они находят только ссылки внутри одного веб-сайта, игнорируя ошибки 404, возникающие при переходе по ссылкам с других сайтов. В результате, эти инструменты пропускают 83% всех ошибок 404 на веб-сайтах. Одним из способов решения этой проблемы является поиск ошибок 404 путем анализа внешних ссылок. Наиболее эффективными способами обнаружения ошибок 404 являются использование Google Search Console, Google Analytics или программного обеспечения для сканирования. Другой распространенный метод – отслеживание трафика на страницы с ошибкой 404 с помощью анализа лог-файлов. Это может помочь понять, какие именно страницы с ошибкой 404 посещали пользователи. Еще один способ отслеживания трафика на страницы с ошибкой 404 – использование инструментов отслеживания трафика на основе JavaScript.