Редирект 301 с помощью .htaccess

Подписаться на комментарии по RSS

Иногда случаются ситуации, когда вебмастеру необходимо сделать так, чтобы пользователь, набрав в адресной строке http://СтарыйСайт.ру/ автоматически попадал на НовыйСайт.ру. Например, это необходимо в том случае, если вебмастер решил перенести сайт на новый домен, но хочет, чтобы все пользователи, приходящие по ссылкам на старый домен, не были потеряны. Также такое перенаправление (редирект) необходимо для грамотной индексации нового сайта поисковиками. В случае редиректа они поймут, что НовыйСайт.ру – это наследник сайта СтарыйСайт.ру, и передадут ему все права и обязанности родительского сайта.

Перенаправление (редирект) можно делать разными способами. Я расскажу о редиректе с помощью файла .htaccess, который сам многократно использовал.

Итак, если вы перенесли сайт на новый домен, полностью сохранив его структуру – надо сделать так, чтобы все страницы старого сайта перенаправлялись на аналогичные страницы нового. Для этого в файле .htaccess пишем:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://НовыйСайт.ру/$1 [R=301,L]

Теперь, введя в адресной строке браузера, например, СтарыйСайт.ру/about.php, пользователь автоматически будет перенаправлен на НовыйСайт.ру/about.php. А поисковик еще получит сообщение, что это редирект 301 – т.е. что страница перенесена навсегда и новой странице можно передать от старой все технические параметры типа PR.

Если структура сайта изменилась, то можно сделать редирект всех страниц старого сайта на главную страницу нового. Делается это так:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://НовыйСайт.ру/ [R=301,L]

Кстати, если вдруг вам надо сделать так, чтобы некоторые страницы на старом сайте не редиректились на новый, а по прежнему отображались по старому адресу - это тоже возможно. Например, вы ходите, чтобы при заходе по адресу http://СтарыйСайт.ру/readme.txt редиректа не было и пользователь увидел именно эту страницу - вставьте следующий код:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^readme\.txt$ - [L]
RewriteRule (.*) http://НовыйСайт.ру/ [R=301,L]

В примере видно, что при разборе .htaccess файла сервер сначала дойдет до строки:

RewriteRule ^readme\.txt$ - [L]

Увидит, что текущий URL http://СтарыйСайт.ру/readme.txt совпадает с указанным в ней адресом страницы, поймет, что преобразовывать ничего не надо, даст команду на отображение данной страницы и прекратит дальнейшее выполнение команд по преобразованию, т.к. в конце данной строки стоит флаг L, который останавливает процесс преобразования.

Еще редирект можно использовать для того, чтобы избавиться от дубля сайта с приставкой www. Как известно, по умолчанию любой сайт можно загрузить как с приставкой www, так и без нее. С точки зрения поисковиков – это 2 разных сайта. Конечно, можно указать основной домен в файле robots.txt, да и сам поисковик в результате оставит в поисковой выдаче только один вариант сайта. Но можно самому этот процесс отрегулировать, поставив 301-редирект с домена с www на домен без www. Для этого пишем:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.ru)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Если домен вашего сайта зарегистрирован не в зоне RU – не забудьте поменять зону на свою в коде выше!


Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)




(обязательно)