OrionXL

Ошибка 404. Корректная обработка 404 ошибки

Роман Иванов @ 16:27 07.12.2009

Узнайте как добиться того, чтобы Ваш собственный сайт или сайт компании показывал пользователю или потенциальному клиенту только нужную и проверенную информацию. Если Вы считаете, что Ваш интернет ресурс должен соответствовать высоким стандартам, то Вы сможете это добиться, если научитесь обрабатывать ошибку 404.

Ошибка 404 отображается в браузере пользователя, когда он случайно или по стечению обстоятельств в адресной строке указывает адрес несуществующей страницы, либо заходит на Ваш сайт по неправильной ссылке.

Каждая ошибка, отдаваемая веб-сервером, имеет свой особенный код, который соответствующий классу возникшей ошибки. Эти коды ошибок (например 403 или 404) приведены к одному стандарту и подробное описание можно найти в соответствующем интернет-стандарте RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1).

В зависимости от установленного на Вашем хостинге сервера, можно исправить эту ситуацию несколькими стандартными  способами. В случае сервера Apache необходимо вставить в файл .htaccess следующую строчку кода:

ErrorDocument 404 /404.html

где:

- 404.html - это страница с сообщением об ошибке, специально созданная Вами (название файла особой роли не играет и вы можете дать любое другое, как вам больше нравится),

- файл .htaccess - это специальный файл, который содержит директивы (команды) для сервера Apache, его в рассматриваемом случае необходимо разместить в корневом каталоге вашего сайта.

Рассмотрим ситуацию, когда на хостинге установлен сервер IIS (Internet Information Service от Microsoft). Настраивать обработку ошибки 404 в данном случае легче всего с помощью менеджера предлагаемого компанией Microsoft - Internet Information Service (IIS) Manager. Для этого в списке настроек сайта выбираем пункт HTTP Features->Error Pages. Ищем соответствующий заголовок  и открываем для редактирования. Далее просто указываем путь к файлу, который будет передаваться пользователю в случае этого события - запрашиваемый файл не найден. В файле Web.config обработка ошибок прописывается так:

<error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" />

Файл web.config будет выглядеть следующим образом (рассматриваем IIS 7):

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.webServer>
     <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" />
     </httpErrors>
  </system.webServer>
</configuration>

где:

- 404.html - это специально созданная вами страница с сообщением о произошедшей ошибке,

- web.config - это специальный файл, содержащий директивы для сервера IIS. Он так же должен находиться в корневой директории сайта.

Что же должен увидеть пользователь  при возникновении ошибки 404?

Cовершенно не правильно перенаправлять пользователя на какую-нибудь страницу сайта отличного содержания, создавая иллюзию, что все хорошо:

  • Во-первых, это введет пользователя в замешательство, в данном случае необходимо информировать его о произошедшем факте.
  • Во-вторых, вы наплодите в поисковых системах большое количество неинформативных страниц, т.к. если возвращаемый код страницы будет отличным от 404.

Представьте себе случай, что вы перенаправляете пользователя на главную страницу, да еще с 404 кодом! В интернете встречается и такое предложение на обработку ошибочно введенного адреса:

ErrorDocument 404 http://www.homebusiness.ru # совершенно не верно, теряется весь смысл обработки 404 исключения

Контент (текст) файла обработки ошибки (404.html) должен содержать информацию, сообщающую пользователю о том, что запрашиваемый адрес не найден и он может перейти на главную страницу или воспользоваться картой сайта. А не голое и унылое сообщение из пары слов на белом фоне, т.к. пользователю совершенно будет не понятно куда идти и что делать дальше, или какое либо перенаправление на другие страницы ресурса. Спросите себя о том, что бы Вы  хотели увидеть в данной ситуации?

Есть еще один вариант обработки соответствующего исключения (ошибки 404) - обработка самой CMS (системой управления сайтом). Как это работает? В большинстве случаев алгоритмы схожи между собой у разных систем.

Любой запрос, пришедший через url обрабатывается внутри "движка" и в соответствии с результатами обработки выдается результат - сформированный контент.  С одной стороны это самый оптимальный вариант, т.к. разработчик веб ресурса или система управления сайтом знает что и как. Если CMS построена на языке php, то необходимо установить заголовок страницы в статус ошибки 404. Исходный код должен содержать следующие строчки:

<?php
header('HTTP/1.x 404 Not Found');
header("Status: 404 Not Found");
?>

Как обработать исключение с помощью соответствующей CMS? Это сложный вопрос и ответить на него не просто, т.к. количество последних очень большое и постоянно увеличивается. Так что подобную информацию можно найти в руководствах, на форумах и т.д.

Приведем примеры:

Рассмотрим некий сайт, который обрабатывает входящие страницы - www.site.ru. Если мы отправим динамический запрос формы - www.site.ru/index.php?article=1 - и если у нас есть такая статья, то он выдаст ok. Но если задать не существующую страницу www.site.ru/index.php?article=23eft, тоу большинства систем останется пустое поле, если не появятся системные ошибки. Это не правильно! Вот здесь и должно отображаться это сообщение.

В случае посещения сайта по ошибочному (не правильному) url : www.site.ru/index_12.html (соответствующая страничка на сайте отсутствует), мы должны уведомить пользователя об этом - сообщить, что произошла исключительная ситуация.

Комментариев нет

Комментариев нет.

RSS-лента комментариев к этой записи.

Извините, обсуждение на данный момент закрыто.

алгоритмы, методы, программы - OrionXL