|
||
|
||
Обработка ошибки 404Используя интернет Вы не единожды сталкивались с ситуацией, когда Ваш браузер не может отобразить запрашиваемую страницу. Причин может быть несколько. Одна из них - это отсутствие запрашиваемой страницы по указанному адресу. Может быть ссылка не верна. А может поменялась структура сайта. К примеру Web-master перешел на использование PHP и теперь все его страницы имеют соответствующее расширение, поисковые же системы выдают еще старые ссылки, да и на других серверах не часто проверяют ссылки на чужие сайты. Знакомая ситуация? Поднимите руки, кто ни разу не менял структуру сайта? Глупее этого только вопрос: кто ни разу не менял хостинг? Что делает пользователь когда не получает запрашиваемую страницу? Правильно, жмет "Reload", иногда +"Shift". А если не помогает? То... закрывает окно браузера. А как не хочется терять посетителя, и направить его на "путь истинный", то есть на Ваш сайт. Пусть даже он сам набирал Ваш адрес и ошибся. Оказывается указанная проблема решаема. Достаточно указать Web-серверу, что делать при возникновении ошибки 404 (Not Found). У Web-сервера Apache есть специальный файл конфигурации ".htaccess". Который Вам необходимо поместить в корень Вашего виртуального сервера, если его там еще нет. А добавить в него необходимо всего одну строку: "ErrorDocument 404 /404.html". Эта директива указывает серверу какую страницу необходимо показать при возникновении ошибки 404. То есть когда клиент запрашивает несуществующую страницу. В нашем примере это будет страница "404.html". Но Вы можете указать любую. Слэш (дробь) здесь используется как часть виртуального адреса. В нашем случае страница "404.html" берется из корня виртуального сервера. Подобным способом обрабатываются и другие ошибки. Например 500 - внутренняя ошибка сервера. И теперь если вдруг запрашиваемой страницы не окажется у Вас на сервере, то пользователь вместо "холодного" : "невозможно отобразить страницу", увидит Вашу страницу "404.html". А уж в ней-то Вы убедите его в необходимости посетить Ваш сайт. К примеру вот так:
Все замечательно работает пока Вы не начнете использовать технологию SSI (включения на стороне сервера). Суть которой в том (для тех кто не в курсе), что некоторые страницы могут вставлять внутрь себя содержимое других. Причем происходит это прямо на сервере, и пользователь получает уже готовый вариант. Так вот, если вставляемая страница не существует, то сервер на том месте где она должна быть вставлена выдаст сообщение: "on error occured while proccesing this directive". Которую, в прочем, он выдаст и в случае некоторых других ошибок. Что делать? Оказывается это стандартное сообщение можно заменить на свое. Делается это директивой <!--#config errmsg='Error message' --> прямо в SHTML файле, то есть в файле в котором допустимо использовать технологию SSI. А вместо фразы в кавычках необходимо ввести желаемый текст. У меня этот текст совпадает с содержимым 404-й страницы. И уж если Вы используете PERL, то и там необходимо обрабатывать ошибки отсутствия запрашиваемой страницы. Делается это примерно так:
То есть, если есть файл указанный в переменной $path, то он открывается, если нет, то открывается уже знакомая нам страница "404.html". Более подробно об использовании SSI при построении сайта по единому шаблону написано здесь и здесь. А здесь несколько предостережений по использованию PERL-скриптов, чтобы обезопасить Ваш сайт от злоумышленников. Автор - Юрий Рассадников Источник - http://rsw.mastak.com
|
||
|
||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |