Как сделать и зачем нужен 301 редирект

216

redirectВ первую очередь, перед тем как переходить непосредственно к действиям, хочется описать в нескольких предложениях, что такое 301 редирект и для чего он используется.

301 редирект нужен для того, что-бы перенести сайт на постоянной основе на новый адрес, который указывается в http заголовке. Пользователи, которые заходят на сайт, а также поисковые боты благодаря 301 редиректу будут перенаправляться по новому адресу.

При 301 редиректе получается склейка старого и нового адреса сайта. Параметры ТИЦ и ПР также будут переданы новому адресу URL.


Недавно я писал статью о том как определить главное зеркало сайта, она тоже может быть полезна в рамках этой темы. Там происходит склейка адреса сайта с www и без www. Но когда надо склеить два разных домена и при этом сохранить вес старого при переносе на новый, то нужно использовать 301 редирект. Также 301 редирект может использоваться при переносе страницы сайта, например при смене CMS.

Редирект можно выполнить различными способами, которые зависят от програмного обеспечения.

Ниже я приведу способы, которые можно использовать для осуществления редиректа.

301 редирект www на без-www

Применяется когда нужно перенаправить с URL вида http://www.site.ru на http://site.ru.

Необходимо вносить изменения в файл .htaccess в корневой директории сайта.

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

Редирект всех файлов в папке на один файл

Если вам больше не нужен определенный раздел сайта (например new1) и нужно перенаправить все запросы к папке (/new1) на один файл /new.php

Для этого в .htaccess добавляем следующий код

RewriteRule ^new1(.*)$ /new.php [L,R=301]

В случае если требуется перенаправить все файлы кроме одного, например:
все файлы из папки /new1 должны редиректится на файл /new.php, кроме файла /new1/photos.html, который должен перенаправляться на /new_photos.html, пишем следующий код:

RewriteRule ^new1/photos.html /new_photos.html [L,R=301]
RewriteRule ^new1(.*)$ /new.php [L,R=301]

Редирект динамического URL на новый файл

Если есть необходимость сделать редирект динамического URL на новый статический файл

RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=301]

То есть теперь, запрос к файлу вида http://www.site.ru/article.jsp?id=3232 и/или http://www.site.ru/article.jsp?id=8745 будет отправлен на файл http://www.site.ru/news.htm

Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias

Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini

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

Однако, у этого способа есть недостаток — все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно.

[featured]Спонсор статьи: Чтобы ваши сайты всегда были доступны для пользователей и быстро загружались, нужно выбирать качественный хостинг, который отвечает всем этим требованиям.[/featured]

32 Комментарии
  1. Бездомный Бродяга говорит

    Полезный материальчик ты накатал! Сам часто пользую различные редирексты, например при переезде с rav4click.ru на homelerss.ru

  2. Luckyboy говорит

    Спасибо.
    Ага, я подписан на твой блог, видел, что ты переехал 🙂

  3. Сергей говорит

    Недавно сделал 301 редирект. Спустя 2 недели все параметры гугл хорошо «принял» для нового домена со старого. Вернул pr4 и т.д. А вот яндекс…он просто не индексит новый домен. ВООБЩЕ. Мне что насильно надо удалять старый домен из индекса сначала? или просто дольше ждать, пока яндекс все поймет? Сейчас домена нового нет в выдаче яндекса))) Прям не знаю, что делать.

  4. Luckyboy говорит

    Старый удалять не надо, просто надо ждать. Домен через add Url добавить в яндекс новый.

  5. Сергей говорит

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

  6. Luckyboy говорит

    🙂 Спасибо, приятно, что ценят.

  7. tushkan говорит

    Помогите, не могу сделать 301 редирект с http://www.bioritm0.msk.ru/ware.php?wid=3333 (которой уже нет)
    на http://www.bioritm0.msk.ru/index.php?option=com_virtuemart&category_id=47&flypage=flypage.tpl&page=shop.product_details&product_id=31&Itemid=47

    это вообще не возможно?

  8. Luckyboy говорит
  9. Светлана Бобровская говорит

    Я хочу разделить свой нынешний блог, и перенести статьи с доимена ru на info с тем же именем. На прежнем пойдет акцент на блоговых проблемах (общение, конкурсы, эстафеты и т.п.), а статьи хочу перенести на новый, иначе огранизованный, уже не-блоговый сайт. Имя будет то же (vseuch), хочу и по оформлению сделать сходным. Это как будет оцениваться? Не делаю ли я грубейшую ошибку? Достаточно ли будет использовать 301 редирект для переносимых статей?

    1. Luckyboy говорит

      Ну вообщем да, думаю что достаточно. По оформлению — это критично не повлияет.

  10. RunetPP говорит

    А что если просто в robots.txt прописать адрес нового сайта тИЦ, PR и не склеются и роботы не перейдут на новый URL?

  11. Morfiy говорит

    Что то так и не понял как сделать редирект с одного домена на другой???

  12. Luckyboy говорит

    Попробуйте поискать информацию еще в других местах. Я сейчас немного отдалился от этих вопросов (технических) и точно уже не помню.

  13. Сергей говорит

    Спасибо! Нам очень помогла Ваша статья. С помощью нее у нас теперь все работает!

  14. Илья говорит

    По самым последним сведениям pr при редиректе передается не полностью: http://dezhik.ru/2010/03/301-redirekt-ne-polnostyu-peredaet-pr/

  15. закрути говорит

    Решил на сайте разместить движок каталога статей. Ранее на сайте статьи размещать вручную в виде статичных HTML файлов. Пришло время автоматизировать данный процесс и естественно перенести на новый двиг старые статьи.

    Чтобы не упасть в выдаче выход редирект 301. Спасибо за информацию.

  16. partnner говорит

    За статью спасибо! вопрос такой: а mysite.ru (pr3) mysite.ru/index.htm (pr2) следует ли сливать через редирект 301?

  17. Luckyboy говорит

    Да, такое дело следует слить. Так как от дублей типа — mysite.ru/index.htm следует избавляться.

  18. Nata говорит

    Здравствуйте. Подскажите пожалуйста. А если у меня есть поддомен. Он не связан с тематикой домена и стал раскручиваться. Я хочу сделать из него самостоятельный сайт. Как это лучше и правильнее сделать?

  19. Luckyboy говорит

    Если пока не очень раскрученный, просто залейте его на самостоятельный домен и все. Продвигайте.

  20. Яфа говорит

    Спасиб за инфу, четко и ясно, на других форумах сопли жуют.

    Поставил-таки на свой блог, надеюсь заработает как надо.

  21. Борис говорит

    Спасибо за подробный пост! Наконец-то разобрася с редиректом.

  22. Сергей говорит

    Добрый день. Подскажите пожалуйста как правильно сделать редирект 301 для 80 страниц. Страницы разные и в моем случае нужно каждую страницу прописать.

    по такому варианту:
    Redirect 301 /old-page.html http://new-domain.ru/new-page.html

    меня интересует следующее как продолжить этот список?

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

    Так правильно или по другому нужно делать?

    Заранее спасибо.

    1. nikk говорит

      ну как правильно оказалось ? так, как вы написали?

  23. Luckyboy говорит

    Приветствую. Да, получается, что так. Почему говорю так не уверенно — очень давно не имел дела с редиректами, однако исходя из поста — должно сработать.

  24. casino agat говорит

    Хочу добавить, для того чтобы редирект наверника увидел яндекс, нужно прописать в файле robots директиву Host, пример:
    User-agent: *
    Disallow: /cgi-bin/
    Disallow: /data/
    …………………….
    …………. и т.д если у вас есть эти строки после них нужно писать следующее
    User-agent — для яндекса:
    User-agent: Yandex
    Disallow:
    Host: online-casinowm.ru

  25. марат говорит

    ХЗ зачем указал в файле sitemap адрес:

    http://мой_сайт/ndex.php

    а так как на мой сайт есть внешние ссылки с адресом http://мой_сайт
    то теперь гугл видит 2 абсолютно одинаковые страницы:

    http://мой_сайт
    и
    http://мой_сайт/ndex.php

    пока никто не ругает меня, но меня это нервирует…
    Да и PR будет делиться.
    Посоветуйте наилучшее решение…..

  26. Игорь говорит

    Уже пол дня мучуюсь, не получается сделать редирект. Обновляю сайт, домен остается тотже. Делаю следующее:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^Мойки-Воздуха/Venta-LW24-Plus-белый\.html$ http://2.filter-tver.com/venta-2/venta-lw25-belyj [R=301]
    RewriteRule ^filtry-klassicheskie/rodnik/item/rodnik-3m\.html$ http://2.filter-tver.com/rodnik/rodnik-3m [R=301]
    404 ошибка, как бы не пробовал..

  27. Роман говорит

    Сайт переехал на новый движок, на старом был УРЛ /index/page/ на новом УРЛ будет /page/ (старый не могу оставить, особенности движка…). Я запутался с 301 редиректом. Если сделаю 301 редирект то старница не просядет? Ведь старой ссылки уже нигде не будет ни на сайте, ни в карте сайта. Как поисковик поймет что это та же страница? Как я себе это понимаю, поисковик должен редиректится со старого адреса и тогда он поймет что страница переехала.

  28. Гарыныч говорит

    1. У меня на сайте нужно поменять имена многих категорий. Старые имена заканчивались на .html. Они хорошо проиндексировались. Теперь будут без окончания. Мне нужно, что-бы все материалы и категории оканчивающиеся ранее на окончание .html, склеились и автоматически перенаправлялись на ссылки нового вида.
    2. Зачем склеивать страницы с www и без www? Это влияет как-то на сео-оптимизацию в поисковиках?

  29. Евгений говорит

    Здравствуйте,очень необходим ваш совет,так как даже не знаю в каком направлении искать,создаю свой сайт на CMS Prestashop 1.6 для службы доставки товара из Китая,задача отображать всё содержание сайта(вместе с работой поисковой формы на сайте) с домена мама на моём домене дочка в режиме онлайн на всю страницу сайта,а в самом верху страницы сайта разместить шапку для отображения контактных телефонов и две,три папки с информацией о доставке,оплате и пр.(шапка на странице сайта может быть создана с помощью дополнительного самописного модуля для данной версии commerce CMS Prestashop 1.6).Что для этого требуется и нужно ли при этом переводить свой домен дочку на хостинг домена мамы???Буду очень признателен за ваш ответ!!!Спасибо P.S.На какой CMS работает домен мама не известно,контент сайта превышает 10000 позиций товара.

  30. Евгений говорит

    Уже разобрался сам,всем спасибо:)

Комментарии закрыты.