Замена стандартных сообщений об ошибках при помощи файла .htaccess
htaccess
redirect
404
notfound
error
С помощью файла дополнительной конфигурации веб-сервера apache можно легко заменить стандартные сообщения об ошибках на свои собственные.
Например, настроить обработку ошибки 404. Ошибка 404 говорит о том, что сервер не может найти данные, согласно запросу.
Например, какая-то страница Вашего сайта была удалена или перенесена, а ссылка на нее по-прежнему стоит где-то в дебрях интернета.
Если пользователь перейдет по этой ссылке, то получит ответ сервера с ошибкой 404.
После чего, скорее всего, сразу закроет в кладку, даже не пытаясь найти переехавшую страницу.
Однако, если вместо стандартного сообщения об ошибке будет загружаться какая-то html страница с ссылками на главную или на карту сайта, то пользователь с большей вероятностью останется на сайте.
Можно при ошибке 404 отправить пользователя, например, на главную страницу сайта при помощи следующего кода:
Однако, такое перенаправление не всегда удобно. Пользователь может не понять, по какой причине его выбрасывает на главную страницу сайта.
Для обработки 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 сайта и его позиции в выдаче поисковых систем.
Код такого редиректа выглядит следующим образом:
Файл .htaccess, содержащий эту строчку размещается на старом домене, и все пользователи, а так же поисковые роботы, со старого сайта перенаправляются на новый.
Таким образом новый сайт не теряет пользователей и pr старого сайта.
Так же возможно сделать 301 редирект с конкретных страниц сайта на другие страницы.
Например, если наш сайт поменял свою структуру.
Нужно это, опять же, для того, чтобы не терять трафик, ведь в выдаче поисковых систем, после изменения структуры сайта,
какое-то время будут ссылки на старые страницы.
Так же некоторые страницы могли попасть в закладки пользователей, на эти страницы могли остаться ссылки на сайтах, так что,
чтобы не отправлять пользователя лишний раз на страницу с 404 ошибкой, лучше настроить 301 редирект при изменении структуры сайта.
Итак, сделать 301 редирект с одной внутренней страницы сайта на другую можно следующим образом:
В данном случае работает редирект 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. Во втором случае - наоборот.