.htaccess + SSI. Работа над ошибками // Mash

Часть вторая, продолжение первой.

Так вот, забудьте про flash-меню! Не получилось. :)
В принципе, организовать отдельный показ текстовых ссылок и flash-меню достаточно просто. Почему же тогда не получилось? Лень-матушка сгребла в охапку своими прилипчивыми ручонками и сказала: «Выпей коньячку, подними правую руку и опусти ее со словами». Все прекрасно знают, что это за слова. (Маячок: «А ну его…, лень»). Может быть, в следующей жизни, на более мощных компьютерах?

Вообще-то была такая задумка. Пункты текстового меню имеют ссылки на файлы типа <a href="http://redux.by.ru/comp/comp.shtml"> Компьютеры </a>. Делаем флеш-меню, в котором ссылки имеют небольшое дополнение в виде ?fl, т.е. при выборе раздела «Компьютеры» в адресной строке будет url следующего вида: http://redux.by.ru/comp/comp.shtml?fl. При обработке такой ссылки переменная окружения «QUERY_STRING» примет значение fl, которым можно побаловаться в файле menu.shtml:

<!--#if expr = "$QUERY_STRING=fl" -->

<img src="../shablon/reklama_best.gif" width="200" height="30" border="0" alt="">

// Здесь уже насколько фантазии хватит. Можно оставить пустое место,
// а можно рекламку из того же flash'а включить.

<!--#break -->
<!--#endif -->

// Ну а дальше — тот топорный вариант из первой части.
// Кстати, либо <!--#break --> на by.ru не работает, либо у меня — pyku.sys.

Не срослось. Дело в том, что локальные ссылки в документах при этом остаются без флага-аппендикса (?fl). С cookies’ами возиться нет желания по личным неприязненным отношениям.

Лучше я поведаю об ашипках.

Стандартная ситуация: ссылка «побилась», устарела, но осталась в базе поисковой машины. Пользователь пришел по ней, страница не найдена (ошибка 404). Веб-сервер хостера выдает свою страницу мол, извиняйте, хлопцы, бананьев нема. Через несколько секунд «заманивает к себе» со словами: «Ошибки иногда случаются. Но вовсе не означают, что произошло что-то ужасное и непоправимое». Ужасное или не ужасное, а вот 98% посетителей потеряны. В адресной строке не осталось даже намека на вашу страницу, пользователь уже не помнит результатов поиска.

Вообще, убирать устаревшие страницы с сервера — моветон. Лучше менять html-код таких файлов:

<html>
<head><title>Все течет, все меняется</title>
<meta http-equiv="Refresh" Content="10, url=http://www.yoursite.ru/index.html">
</head>
<body>
<p>Извините, но наш криворукий веб-дизайнер так часто все менял, что мы теперь даже сами не знаем, где находится страница, которая вам нужна.<br>
Вы можете попробовать найти ее самостоятельно, начав свой поиск с <a href="http://www.yoursite.ru">главной страницы проекта.</a></p>
</body>
</html>

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

Наиболее интересные ошибки Апача:

  • 401 — Authorization Required (требуется авторизация).
  • 403 — Forbided (запрет на доступ, пользователь не прошел аутентификацию).
  • 404 — Not found (запрашиваемый документ не найден).
  • 500 — Internal Server Error (ошибка в скрипте).

Для того, чтобы пользователю были показаны ваши собственные сообщения об ошибках, в .htaccess пишем:

    ErrorDocument 401 /errors/error401.html
    ErrorDocument 403 /errors/error403.html
    ErrorDocument 404 /errors/error404.html
    ErrorDocument 500 /errors/error500.html

Пути к файлам указываются от корня сервера. При возникновении 404 ошибки пользователю загрузится файл http://www.yoursite.ru/errors/error404.html, в котором можно записать что-нибудь типа такого:

<html>
<head><title>Промазал!</title></head>
<body>
  Нету такой страницы d:-)
</body>
</html>

Таким образом, пользователь пока еще остается на вашем сайте, но, прочитав неуважительное «Промазал!», скорее всего слиняет. Будем вежливы! Прикрутим SSI и напишем пару ласковых слов:

[файл error404.shtml]

<html>
<head><title>Sorry… Error 404 — Document Not Found</title></head>
<body>

<p>Извините, но запрашиваемая Вами информация<br>отсутствует по адресу "http://www.yoursite.ru<!--#echo var="REQUEST_URI"-->"</p>

<p>Если Вас не затруднит, напишите об этом веб-мастеру<br> по адресу: <a href="mailto:webmaster@yoursite.ru"> webmaster@yoursite.ru </a></p>

<p><a href="http://www.yoursite.ru">На главную страницу сайта</a></p>

</body>
</html>

Если теперь добавить свои стили, оформление сайта и форму обратной связи, то может и получится что-нибудь хорошее.

26 октября 2002