301 редирект htaccess с одного домена на другой

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

Перед созданием 301 редиректа…

А начну я с того, что перед созданием перенаправления, стоит тщательно проверить работоспособность сайта на новом домене. В частности:

  • Проверьте директивы в файле robots.txt.
  • Проверьте метатеги Robots на веб-страницах сайта, на новом домене.
  • Проверьте метатеги canonical.
  • Проверьте доступность страниц.
  • Обязательно создайте 404 страницу и установите на неё счётчик, в дальнейшем это позволит отследить наличие проблем.

Более подробно о потере трафика после реорганизации сайта, читайте в этой статье. Только если Вы уверены в работоспособности и доступности сайта для поисковых роботов на новом домене, можно приступать к дальнейшим действиям.

Перенаправление с одного домена на другой в .htaccess

Существует достаточно много вариантов решения поставленной задачи. Лично я рекомендую использовать вот такой вариант?

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$
RewriteRule ^(.*)$ http://www.new-domain.ru/$1 [R=301,L]
</IfModule>

Чем хорош данный вариант? Во первых, он исключает из редиректа на старом домене файл robots.txt, что позволяет задать в нём директиву Host с указанием нового домена. Это работает только для поисковой системы Яндекс, подробней читайте тут. Я же отмечу, что директива Host может быть указана где угодно, но лучше будет указать её так:

User-agent: Yandex
Disallow: /cgi-bin
Host: www.new-domain.ru

Во вторых, этот вариант осуществляет редирект с одного домена на другой, независимо от того было ли указано в старом домене www. или нет, учтены оба варианта.

Очевидно и то, что для работы приведенного примера редиректа необходимо указать свои домены. Обращаю ваше внимание на то, что в регулярном выражении директивы RewriteCond необходимо экранировать спецсимволы, тот же символ точки (.), например: old-domain\.ru, в то время как для нового домена в этом нет необходимости, но нужно начинать именно с HTTP-протокола, т.е. http:// и т.д.

К слову, новый домен можно указать и без www. в начале, но тут не забывайте о главном зеркале.

Дополнительные рекомендации

Рекомендация 1: Ещё до установки редиректа можно использовать директиву Host для Яндекс и метатег canonical для Google, а также файл sitemap.xml с URL-адресами страниц на новом домене; дождаться склейки и только тогда ставить редирект.

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

В Google для этого можно использовать поисковый оператор запросов info:, указав в качестве значения старый домен, например: info:old-domain.ru.

Также Вы можете использовать и ряд онлайн сервисов, например: проверка домена на склейку от SEOGadget, проверка склейки на webmasters.ru и т.д.

С моей точки зрения лучше сразу ставить 301 редирект с исключением файла robots.txt, что избавит нас от лишних телодвижений и проблем с дублями.

Рекомендация 2: зарегистрируйте сайт на новом домене в Яндекс.Вебмастер и Google инструменте для веб-мастеров, не удаляя сайт на старом домене.

Рекомендация 3: используйте инструмент «Изменение адреса» в Google инструменте для веб-мастеров, чтобы сообщить Google о новом домене сайта. Для этого должен быть добавлен и подтверждён сайт на старом домене. Выбираем его в списке. На открывшейся странице кликаем список с иконкой в виде шестеренки, а потом пункт «Изменение адреса».

Инструмент изменения адреса в Google инструментах для веб-мастеров

Рекомендация 4: будет не лишним создать файл sitemap.xml на новом домене и добавить его в Яндекс.Вебмастер и Google инструменты для веб-мастеров.

Рекомендация 5: внимательно следите за сообщениями сервисов для вебмастеров. В частности, особый интерес могут представлять отчёты:

  • Индексирование сайта > Исключенные страницы – в Яндекс.Вебмастер.
  • Сканирование > Ошибки сканирования (вкладка «Не найдено») – в Google инструментах для веб-мастеров.

На этом у меня всё. Спасибо за внимание. Удачи!

Короткая ссылка: http://goo.gl/sTIVZA

Ренат Рафаилевич
Ренат Рафаилевич комментирует...

Большое Вам спасибо Константин!!! За очень полезную статью, понятную с четкими инструктажем и иллюстрациями.

Константин Кирилюк
Константин Кирилюк комментирует...

2Ренат Рафаилевич да, с иллюстрациями у меня даже перебор получился... целых две ;) но может в дальнейшем что-то ещё такого добавлю.

Лариса Марштупа
Лариса Марштупа комментирует...

Константин, а когда можно удалять сайт на старом домене?

Константин Кирилюк
Константин Кирилюк комментирует...

2Лариса Марштупа здесь два ориентира трафик и ссылочный вес. В случае с трафиком, нужно держать домен до тех пор, пока трафик с него не исякнет. В случае со ссылками несколько сложнее, удалив старый домен вы потеряете склеившийся вес. В начале это будет не заметно, но после пересчёта всё станет очевидно. Так что надо смотреть по обстоятельствам.

Сергей Назаров
Сергей Назаров комментирует...

Создание редиректа с одного домена на другой зачастую подразумевает (условно говоря) использование двух сайтов. Один сайт со старым доменном, и один с новым. Это не всегда приемлемо, с учетом лимитов на количество сайтов. Поэтому некоторые хостинг провайдеры выделили эту функцию в отдельную услугу.

Например, в на домашней странице cPanel есть блок «Домены», где нужно смотреть пункт «Перенаправления». Если есть кликаем и добавляем такое. Выглядеть этом может так:

[img]//lh3.googleusercontent.com/-uGMasJRWxW8/VTu58y1tdKI/AAAAAAAACKU/0Z4zYWu_JeA/w702-h457-no/cpanel-redirect.png[/img]

Сергей Назаров
Сергей Назаров комментирует...

Ещё один интересный момент, связан с перенаправлением кириллических доменов - не все сервисы поддерживают IDN-домены. Лучше использовать punycode - метод преобразования символов Unicode в последовательность символов из ASCII. Так домен: МойСайт.РФ – превращается в: xn--80arbjktj.xn--p1ai. Для преобразования можно воспользоваться любым punycode конвертором, например: wwhois.ru/punycode.php

[img]//lh5.googleusercontent.com/-sLgCqipt81o/VTu8vR_mAyI/AAAAAAAACLA/vYqVeOKyetA/s620/punycode-convertor.jpg[/img]

Константин Кирилюк
Константин Кирилюк комментирует...

2Сергей Назаров Честно говоря, не знал о добавлении перенаправления в ПУ хостингом. Функция вполне логична! С другой стороны, надо смотреть, как работает такой редирект. По сути, такой вариант, не может оставить доступ к robots.txt на старом домене. Конечно, это не фатально, но тем не менее.

Константин Кирилюк
Константин Кирилюк комментирует...

2Сергей Назаров да, момент с кириллическими доменами я действительно упустил. Не люблю такие домены. Не подходит кириллица в качестве компьютерного языка и т.п. Тем не менее, всё остальное остаётся без изменений. За дополнение огромное спасибо!

Константин
Константин комментирует...

Инструкция понятная, прописал в файлах на купленном домене все необходимые строки, жду склейки.

Владимир
Владимир комментирует...

Хорошая статья, минимум воды, хорошая помощь новичкам

Анонимный
Анонимный комментирует...

Константин, подскажите, пож-ста, как мне исправить ошибку.
У меня есть сайт на WordPress.
Я сменила постоянные адреса вот такого вида http://site.ru/2016/04/18/sample-post/ на такие http://new-site.ru/sample-post/. И стала переносить сайт на новый домен.
Теперь я пишу редиректы, но у меня ничего не получается(
А именно:
В .htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteCond ^(.*)$ http://site.ru/2016/04/05/lpg-massazh/$1 [L,R=301]
RewriteRule ^(.*)$ http://new-site.ru/lpg-massazh/$1 [L,R=301]


Но все-равно вылетает страница 404, потому что редирект идет на страницу такого вида:
new-site.ru/2016/04/05/lpg-massazh
Т.е. дата эта никак не хочет убираться.
Я понимаю, что убрав эту дату, надо как-то сказать об том. Но как?
Что я не так делаю... Подскажите, пож-ста.

Константин Кирилюк
Константин Кирилюк комментирует...

2Анонимный попробуйте так:

RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$
RewriteRule ^\d{0,4}\/\d{0,2}\/\d{0,2}\/(.*)$ http://new-site.ru/$1 [R=301,L]

RewriteCond задаёт условие, а не перенаправление.

Анонимный
Анонимный комментирует...

Здравствуйте! Будьте добры, подскажите, пожалуйста, обязательно ли иметь сайт на домене в зоне рф для редиректа на одну из страниц создаваемого нового сайта, находящегося на другом домене в зоне ru, учитывая, что названия доменов разные?

Дело в том, что я создаю новый сайт на SMS хостинге под WordPress, который будет располагаться в зоне ru, в которой нет свободного нужного домена, в связи с чем предполагаю купить свободный домен в зоне рф, с которого предполагаю перенаправлять пользователей на соответствующую страницу сайта, который будет находиться в зоне ru.

Я имею ввиду, чтобы, пользователь, набирая в поисковике один url-адрес домена зоны рф, попадал на определённую страницу сайта другого домена зоны ru.

В онлайн-чате обращался к консультанту хостинг-провайдера, на котором предполагаю разместить сайт, ответившего "Все редиректы Вы сможете указывать в панели управления хостингом. Если необходимо настраивать редиректы с определенных страниц с одного домена на другой, сможете также указать.", который счёл не достаточно понятным и убедительным.

В связи с чем прошу, пожалуйста, грамотных специалистов помочь разобраться в этом сложном для меня вопросе и ответить, возможен ли технически редирект с домена рф без сайта на домен ru с сайтом или для этого надо создавать сайт на домене зоны рф и если возможен, то как именно?

Константин Кирилюк
Константин Кирилюк комментирует...

2Анонимный В базе данных поисковой системы может присутствовать только «главное зеркало» сайта. Если вы планируете перенаправлять пользователей с домена .рф, на домен .ru, то сайт на домене .ru постепенно заменит сайт на домене .рф и станет «главным зеркалом».