Задача 2. Создание собственных страниц обработки ошибок

Опубликовано пользователем Бессонов Л.В. 03.03.2010г.

Описание

Взаимодействие веб-сервера и клиентов (браузеров и т.п.) подчинено спецификации протокола HTTP (RFC2616). На каждый запрос сервер отвечает, причём перед каждым ответом выдаётся Status Code. Это некий числовой код, указывающий насколько удачно обработан запрос.

Диапазон кодов Значение ответа
Группы кодов состояний
100...199 Информационные коды
200...299 Коды успешного завершения
300...399 Коды переадресации (необходимы дальнейшие действия)
400...499 Коды неполных и некорректных запросов
500...599 Коды ошибок сервера

В HTTP в каждом диапазоне определены лишь несколько кодов, хотя для сервера при необходимости могут определяться собственные коды. Клиент при получении кода, который он не может распознать, интерпретирует его в соответствии с диапазоном, к которому этот код принадлежит. Коды в диапазонах 100-199, 200-299 и 300-399 большинство Web-браузеров обрабатывают без извещения пользователя, а некоторые коды ошибок из диапазонов 400-499 и 500-599 отображаются для пользователя (например, 404 Not Found) и могут быть оформлены в своем вкусе веб-мастером с помощью файла .htaccess.

Нас будут прежде всего интересовать наиболее часто встречающиеся коды состояний (в литературе их также могут называть кодами ошибок):

Код Название Значение ответа
403 Forbidden Запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту
404 Not Found Документ по указанному URI не существует
500 Internal Server Error Сервер обнаружил ошибку в конфигурации при обработке запроса, или один из компонентов на стороне сервера (например, CGI-программа) выдал аварийный отказ

Такие ошибки не редкость и без них наверняка не обойдётся. При их возникновении посетитель Вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Apache предоставляет возможность выдать вместо аскетичного технического текста, не изобилующего деталями, свою страницу, где Вы можете человеческим языком объяснить пользователю, что произошло и что делать.

Допустим, Вы создали сайт mysite.ru, на нём есть страница mysite.ru/news, но пользователь опечатался и набрал mysite.ru/nesw. Это частая ситуация. Также может получиться что пользователь набирает (вызывает из закладок) адрес страницы Вашего сайта, которая удалена или перемещена. Сервер вернёт статус 404 (ошибку 404), и браузер отобразит, к примеру, белый лист с текстом «The requested URL was not found on this server».

Психологический эффект негативнен. Пользователь чувствует себя «выброшенным» с сайта.

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

 В файле .htaccess можно указать какая страница должна открываться при возникновении различных кодов ошибок. Для этого используется директива ErrorDocument.

Синтаксис: ErrorDocument <код> <URL>

Например, если в корне Вашего сайта лежат документы error403.html, error500.html, а при возникновении ошибки 404 мы хотим перенаправлять пользователя на поисковик Google, тогда в .htaccess следует написать следующие инструкции:

  1. ErrorDocument 403 /error403.html
  2. ErrorDocument 404 http://google.com/
  3. ErrorDocument 500 /error500.html

Варианты индивидуальных заданий

Вариант 1

Определите для обработки ошибки 404 переход на страницу /err404.html

Вариант 2

Определите для обработки ошибки 500 переход на страницу http://www.google.ru/#q=internal+server+error&fp=1

Вариант 3

Определите для обработки ошибки 403 переход на страницу /stop.txt

Вариант 4

Определите для обработки ошибки 500 переход на страницу /int_err.html

Вариант 5

Определите для обработки ошибки 404 переход на страницу http://yandex.ru

 

Баннер SGU.RU