Как сделать 301 редирект?


Как сделать 301 редирект?

Код ответа 301 (Moved Permanently) означает, что запрошенный документ теперь доступен по новому адресу на постоянной основе. Редирект 301 может понадобиться в нескольких случаях: переезд на новый домен, изменение адреса страницы или склейка зеркал сайта. Цели этих мероприятий вполне прозрачны:

  • Перенос старых показателей на новую страницу или домен.
  • Устранение битых ссылок, как внешних, так и внутренних.
  • Устранение дублей страниц.

Существует несколько способов сделать 301 редирект, но я предпочитаю вариант с использованием файла .htaccess, который находится в корневой папке FTP вашего сайта (если его там нет, то просто создайте его, он не имеет расширения).

Настройка 301 редиректа со страницы на страницу

Довольно часто возникает ситуация, когда страница сайта была удалена или вынуждена сменить свой URL. При обращении к её старому адресу, пользователь, само собой, увидит страницу 404 ошибки (не найдено).

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

Также его можно использовать для борьбы с дублями страниц. В общем нужно писать книгу на тему «99 способов использование Redirect 301». Вот его синтаксис:

Redirect 301 /old-page.html http://new-domain.ru/new-page.html

Ну или так, результат будет один и тот же:

Redirect permanent /old-page.html http://new-domain.ru/new-page.html

Поясняю: /old-page.html — относительный адрес старой страницы. Он может быть вложенным: /old-category/old-page.html, ну или таким: /old-category/old-page/ — тут никаких ограничений нет. Тоже самое относится к http://new-domain.ru/new-page.html (новой странице), с той лишь разницей, что путь тут абсолютный (не обязательно, чтобы это был новый домен — может быть просто новый внутренний адрес страницы).

Настройка 301 редиректа при переносе сайта на новый домен

Не менее понятная ситуация. Возникла необходимость переехать на новый домен, сохранив показатели старого (тИЦ, PR). В этом случае приписываем в .htaccess старого домена следующее:

Options +FollowSymLinks
RewriteEngine on
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
RewriteCond %{HTTP_HOST} ^old-domain\.ru
RewriteRule ^(.*)$ http://new-domain.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.oldsite\.ru
RewriteRule ^(.*)$ http://old-domain.ru/$1 [R=301,L]

В данном примере мы установили редирект всех страниц старого домена на страницы нового (при условии, что их относительные адреса совпадают). При этом мы оставили без редиректа на старом домене файл robots.txt, чтобы процесс переноса был более полноценным. В него мы прописываем:

User-agent: *
Disallow:
Host: newsite.ru
Sitemap: http://newsite.ru/sitemap.xml

Ну и ждём пару месяцев, пока переезд домена не будет зачтен, а все характеристики — переданы.

Склейка зеркал сайта: 301 редирект c www на без www и наоборот

Существует несколько вариантов обращения к сайту — с www и без www (например, pingoblog.ru и www.pingoblog.ru). Пользователю все равно, как именно вводить URL, так как он в любом случае попадет на одну и ту же страницу. Иначе дело обстоит с поисковыми системами. Они расценивают www.site.ru и site.ru, как два совершенно разных домена (что тянется из глубин истории всемирной сети, когда это действительно было так).

Эти дубли мешают индексации сайта и продвижению в целом, так как, во-первых, это банальные дубли страниц (уж извиняюсь за повторение) и, во-вторых, входящие ссылки будут также укладываться в разные корзины. Тоже самое касается и дублей главной страницы: site.ru, site.ru/index.html, site.ru/index.php и т.д. По этой причине еще на этапе создания сайта желательно позаботиться об этом вопросе и одну из версий сайта (например, c www) переадресовать на другую (например, без www). Если момент был упущен, то тут нет ничего страшного.

Рассмотрим процесс склейки зеркал с помощью 301 редиректа поэтапно.

1. Определяем основной домен, выбранный для индексации поисковыми системами.

Основное зеркало можно легко определить по результатам поисковой выдачи Яндекс и Google. Вводим название домена и смотрим, какой адрес отобразится: www.site.ru или site.ru. Если же сайт еще не проиндексирован, то выбираем его по своему усмотрению. Если в Google и Yandex основные домены разные, то лучше оставьте Яндексовский.

2. Прописываем 301 редирект в .htaccess.

Находим в корне FTP сайта файл .htaccess, скачиваем и открываем в блокноте, а затем вносим в него необходимые изменения. Первый вариант — 301 редирект домена без www на с www:

Options +FollowSymLinks
RewriteEngine On
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

Обратная ситуация — с www на без www:

Options +FollowSymLinks
RewriteEngine On
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
RewriteCond %{HTTP_HOST} ^www.site.ru$
RewriteRule (.*) http://site.ru/$1 [R=301,L]

После завершения редактирования, сохраняем файл и загружаем его в корневую папку FTP с перезаписью.

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.site.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]

Ну и, опять же, если у вас site.ru:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://site.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

3. Настройка robots.txt

Увидели знакомую директиву, оставляющей robots.txt нетронутым? Все верно, вносим изменение в robots.txt:

Host: основное-зеркало.ru

4. Проверяем работу сайта.

Вводим тот адрес, который с которого мы проставляли редирект, например www.site.ru или site.ru/index.html и если при заходе на него происходит переход на site.ru, то всё настроено правильно.

5. Настройка Yandex и Google вебмастер.

Дополнительно применяем соответствующие настройки в личных кабинетах поисковых систем. В случае с Yandex:

Яндекс WebmasterЯндекс Webmaster

Ну и для Google:

Google WebmasterGoogle Webmaster

На этом вроде всё. Удачи вам и если появятся вопросы, то пишите в комментариях.

Материал обновлен: 12 января 2016 года.




Комментарии (9)
  1. Антон
    9 декабря 2014 19:27
    Добрый день.
    Вот такой вопрос: есть сайт на юкозе, хочу перенести его на вордпресс. Как мне лучше поступить, чтобы сохранить посещаемость?
    Создать новый сайт с новым доменом и перенести на него все статьи при этом настроив на него редирект со старого сайта?
    Заранее спасибо за ответ.
  2. 10 декабря 2014 14:49
    Цитата: Антон
    Добрый день. Вот такой вопрос: есть сайт на юкозе, хочу перенести его на вордпресс. Как мне лучше поступить, чтобы сохранить посещаемость? Создать новый сайт с новым доменом и перенести на него все статьи при этом настроив на него редирект со старого сайта? Заранее спасибо за ответ.


    Здравствуйте, все верно - новый домен, сайт и перенос на него материалов со старого с простановкой редиректов и настройкой склейки. Вопрос лишь в том, какой именно редирект использовать - если на новом сайте есть возможность полностью воспроизвести структуру урлов старого, то лучше сделать так, воспользовавшись затем полным редиректом. Если же нет, то тогда придется делать множество постраничных редиректов.
  3. Антон
    11 декабря 2014 00:05
    Спасибо за ответ!
    К сожалению возможности восстановить прежние урлы по-моему невозможно. Все дело в том, что юкоз ставит в конце каждого урла набор цифр.
    А под множеством редиректов вы подразумеваете проставку перенаправления с каждой отдельно взятой страницы?
    И еще вопрос: вот склеил я два одинаковых сайта. Что потом? Сайт на старом домене придется держать активным?
     

  4. 11 декабря 2014 00:24
    Цитата: Антон
    А под множеством редиректов вы подразумеваете проставку перенаправления с каждой отдельно взятой страницы?

     
    Да, особенно это касается главной и разделов. Если страниц на сайте хотя бы не более чем пара сотен, то задача вполне посильная.
     
    Цитата: Антон
    Сайт на старом домене придется держать активным?
     
    Да, пока домены не склеятся. Пара месяцев примерно.
  5. Антон
    12 декабря 2014 00:08
    Благодарю за консультацию)))
    Сложновато конечно, но не получается только у тех, кто не пробует. wink 
  6. Дмитрий
    16 декабря 2014 09:25
    Добрый день. Перенес сайт на новый домен. В  htaccess написал просто, как рекомендует гугл:

    Redirect 301 / http://www.newdomain.com/

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

    <FilesMatch "robots.txt$">
    RewriteEngine off
    </FilesMatch>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://новыйсайт.ru/$1 [R=301,L]

    Появилась следующая проблема - ошибка 500.
    Админ говорит, что на сервере нет модуля симлинк.
    Есть какой-то выход в данной ситуации? Заранее благодарен за ответ.
  7. 17 декабря 2014 00:35
    Здравствуйте, в таких случаях обычно сперва склеивают домены в Яндексе, а лишь затем проставляется 301 редирект на новый домен.
     
    Хотя можете также попробовать написать в службу поддержки Яндекса с разъяснением ситуации - могут пойти навстречу и вручную инициировать процесс склейки доменов.
  8. silatal
    12 мая 2015 17:19
    Здравствуйте.
    У меня ссылки плана /Категория/ID+дикое название страницы. ID = количеству страниц материалов, почти тысяча. Мне нужно привести ссылки к виду: /Категория/НазваниеМатериала?id=номер страницы.

    То есть:
    Категория/205МояСтраницаТутКак-тоПрописана перенаправляется на Категория/МояСтраницаТутКак-тоПрописана?id=205

    Не писать же ручками, все 1000 вариантов в .htacces. Помогите разобраться, как создать цикл?
  9. 13 мая 2015 05:37
    Цитата: silatal
    Не писать же ручками, все 1000 вариантов в .htacces. Помогите разобраться, как создать цикл?

     
    Здравствуйте. Ручками, конечно же, не надо прописывать столько урлов, имеющих одинаковую маску. Тут должна справиться RewriteRule-RewriteCond. Задаете в RewriteRule текущую маску урла, а в RewriteCond - нужную. Вот тут рассматривается пример преобразования ссылок через htaccess: http://rapidup.ru/stati/Htaccess_RewriteRule_primery.html
Оставить комментарий

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent