Замена стандартных сообщений об ошибках при помощи файла .htaccess. Обработка ошибки 404

С помощью файла дополнительной конфигурации веб-сервера apache можно легко заменить стандартные сообщения об ошибках на свои собственные. Например, настроить обработку ошибки 404. Ошибка 404 говорит о том, что сервер не может найти данные, согласно запросу. Например, какая-то страница Вашего сайта была удалена или перенесена, а ссылка на нее по-прежнему стоит где-то в дебрях интернета. Если пользователь перейдет по этой ссылке, то получит ответ сервера с ошибкой 404. После чего, скорее всего, сразу закроет в кладку, даже не пытаясь найти переехавшую страницу.

Однако, если вместо стандартного сообщения об ошибке будет загружаться какая-то html страница с ссылками на главную или на карту сайта, то пользователь с большей вероятностью останется на сайте.

Можно при ошибке 404 отправить пользователя, например, на главную страницу сайта при помощи следующего кода:


ErrorDocument 404 http://www.ваш_сайт.ru/


В коде необходимо заменить http://www.ваш_сайт.ru/ на адрес Вашего сайта.

Однако, такое перенаправление не всегда удобно. Пользователь может не понять, по какой причине его выбрасывает на главную страницу сайта. Для обработки 404 ошибки лучше создать дополнительный html-файл с сообщением об этой ошибке и отправить пользователя на него:


ErrorDocument 404 http://www.ваш_сайт.ru/404.html


В данном случае это файл 404.html, находящийся в корневом каталоге сайта http://www.ваш_сайт.ru/

Оформить эту страницу Вы можете на свой вкус, но, желательно, чтобы она содержала ссылки на главную и на карту сайта.

Так же достаточно распространенными ошибками являются ошибка 401 (Требуется авторизация), 403 (пользователь не прошел аутентификацию, доступ запрещен), 500 (Внутренняя ошибка сервера, например, в синтаксисе или кодировке файла .htaccess). Их обработка происходит по тому же принципу:


ErrorDocument 401 http://www.ваш_сайт.ru/401.html
ErrorDocument 403 http://www.ваш_сайт.ru/403.html
ErrorDocument 500 http://www.ваш_сайт.ru/500.html



Редирект с помощью файла .htaccess

Редирект (от английского redirect - переадресовать) - перенаправление пользователя с одного адреса на другой. С помощью файла .htaccess возможно осуществить несколько видов редиректа:


permanent (301 - документ перемещен постоянно)

temp (302 - документ перемещен временно)

seeother (303 - смотри другой)

gone (410 - убран)


Редирект 301

Наиболее часто используемым является редирект 301, который говорит о том, что сайт переехал навсегда. Изначально эта директива использовалась в том случае, когда сайт перемещался на новый домен, чтобы не терять pr сайта и его позиции в выдаче поисковых систем. Код такого редиректа выглядит следующим образом:


RedirectPermanent / http://новый _сайт.ru/


Файл .htaccess, содержащий эту строчку размещается на старом домене, и все пользователи, а так же поисковые роботы, со старого сайта перенаправляются на новый. Таким образом новый сайт не теряет пользователей и pr старого сайта.

Так же возможно сделать 301 редирект с конкретных страниц сайта на другие страницы. Например, если наш сайт поменял свою структуру. Нужно это, опять же, для того, чтобы не терять трафик, ведь в выдаче поисковых систем, после изменения структуры сайта, какое-то время будут ссылки на старые страницы. Так же некоторые страницы могли попасть в закладки пользователей, на эти страницы могли остаться ссылки на сайтах, так что, чтобы не отправлять пользователя лишний раз на страницу с 404 ошибкой, лучше настроить 301 редирект при изменении структуры сайта. Итак, сделать 301 редирект с одной внутренней страницы сайта на другую можно следующим образом:


Redirect 301 /старая_страница.html http://www.ваш_сайт.ru/новая_страница.html


В данном случае работает редирект 301 со страницы http://www.ваш_сайт.ru/старая_страница.html на страницу http://www.ваш_сайт.ru/новая_страница.html


Склейка зеркал при помощи 301 редиректа

Редирект 301 так же используют для переадресации страниц с префиксом www на страницы без www или наоборот. Дело в том, что для поисковых систем сайт ваш_сайт.ru - это два сайта с одинаковым содержанием, имеющие адреса: http://www.ваш_сайт.ru/ и http://ваш_сайт.ru. Такие сайты (сайты с одинаковым содержанием) называются зеркалами. И различные пользователи ставят различные ссылки на Ваш сайт. Где-то стоят ссылки на сайт с www, где-то - на сайт без www. Таким образом, часть тиц и pr уходят с одного сайта на другой. Чтобы этого не происходило, и поисковые машины считали два этих сайта одним, произвести "склейку зеркал", то есть перенаправить пользователей и поисковых роботов с сайта с префиксом www на сайт без www или наоборот. Для этого в файле .htacces надо написать:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш_сайт.ru
RewriteRule (.*) http://ваш_сайт.ru/$1 [R=301,L]


либо:


RewriteEngine On
>RewriteCond %{HTTP_HOST} ^ваш_сайт.ru
RewriteRule (.*) http://www.ваш_сайт.ru/$1 [R=301,L]


В первом случае мы настроили переадресацию со всех страниц сайта с префиксом www на аналогичные страницы сайта без www. Во втором случае - наоборот.



Забобрить!
<<эпредыдущая статья | следующая статья>>