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

htaccess redirect 404 notfound error

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

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

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

ErrorDocument 404 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. Во втором случае - наоборот.