Узнайте как добиться того, чтобы Ваш собственный сайт или сайт компании показывал пользователю или потенциальному клиенту только нужную и проверенную информацию. Если Вы считаете, что Ваш интернет ресурс должен соответствовать высоким стандартам, то Вы сможете это добиться, если научитесь обрабатывать ошибку 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 (соответствующая страничка на сайте отсутствует), мы должны уведомить пользователя об этом - сообщить, что произошла исключительная ситуация.