Красивый и умный обработчик ошибок

Обработчик ошибок .htaccess + xSSI

Для начала добавим такие строки в ".htaccess".

Sample hide
ErrorDocument 401 /errors.shtml?401
ErrorDocument 403 /errors.shtml?403
ErrorDocument 404 /errors.shtml?404
ErrorDocument 500 /errors.shtml?500

Если Вы когда либо видели примеры подобных обработчиков ошибок, то обратите внимание, что здесь для показа страницы с сообщением об ошибке использован 1 файл, а не 1,2,3... и т.д. Мне показалось маразмом делать несколько практически одинаковых файлов, а Вам?

Вот, собственно, сам файл error.shtml

Sample hide
<html><head>
<!--#set var="d" value="$DOCUMENT_NAME"-->
<!--#set var="l" value="$DOCUMENT_URI"-->
<!--#set var="r" value="$DOCUMENT_ROOT"-->
<!--#set var="s" value="$SERVER_NAME"-->
<!--#set var="h" value="$HTTP_REFERER"-->
<!--#set var="q" value="$QUERY_STRING"-->
<!--#set var="r" value="$REQUEST_URI"-->
<!--#set var="m" value="your@site.ru"-->

<LINK rel=stylesheet href="style.css" type="text/css"> 
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<meta HTTP-EQUIV="REFRESH" CONTENT="6; URL=http://<!--#echo var="s"-->" target="_top">
<title><!--#echo var="r"--> :: <!--#echo var="q"--> :: <!--#echo var="h"--> - <!--#echo var="s"--></title></head>
<body>

<P>Произошла ошибка <B>
<!--#if expr="$q=401" -->401 - Authorization Required (требуется авторизация).                    <!--#endif -->
<!--#if expr="$q=403" -->403 - Forbided (запрет на доступ, пользователь не прошел аутентификацию).<!--#endif -->
<!--#if expr="$q=404" -->404 - Not found (запрашиваемый документ не найден).                      <!--#endif -->
<!--#if expr="$q=500" -->500 - Internal Server Error (ошибка в скрипте).                          <!--#endif -->
</B></P>
<P>Либо эта страница была удалена (например, как устаревшая) или перемещена или скрыта.</P>
<P>Автор постарается изменить ссылку здесь  <B><!--#echo var="h"--></B> не правильную.</P>

<P>пожалуйста напишите по адресу <B><a href="mailto:<!--#echo var="m"-->"><!--#echo var="m"--></A></B> 
и вставьте туда всё, что здесь написано!</P>
<P>Вы можете <B><a href = "http://<!--#echo var="s"-->" target="_top">перейти на главную страницу</a></B>, 
если у Вас не работает автоперемещение.</P>
<!--#include virtual="_counters.html" -->
</body></html>

По сути это абсолютно обычный HTML файл. Обратим внимание лишь на

Из видимых мне недостатков, я хочу отметить, в порядке значимости

  1. В заголовок может попросту не влезть, всё что мы хотим в него запихнуть. Особенно вероятна и досадна потеря Реферера
  2. Размер файла, но во первых его можно серьёзно сократить, а во вторых... в общем ерунда это :)
  3. Работает под управлением Apache или люого ругого сервера с поддеркой xSSI, и НЕ работает в MS IIS

Разное

Попробуйте Создание сайтов от serenity.su.

Обсудить в Живом Журнале