Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Главная » Продвижение сайтов » SEO » 301 редирект - зачем он нужен и как сделать 301 редирект

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

Про 301 редирект уже, наверное, сказано и пересказано множество раз в блогах, форумах и т.п. Но, как оказывается, не до всех эта информация вовремя доходит (тут я как бы намекаю на себя:). За более чем 3 года в сети я слышал про 301 редирект множество раз, иногда даже собирался его «попробовать», но давайте посмотрим фактам в лицо — так этого и не сделал. А зря! Все началось достаточно прозаически — у меня есть один сайт, который постоянно «колбасит» в плане индексации поисковиками. Вроде и ссылки там есть, и контент нормальный, а он все ни в какую не хочет стабильно работать. У меня уже почти закончились варианты подобного поведения, но тут я вспомнил про основы основ SEO и вообще продвижения — 301 редирект.

Беглый опрос в твиттере показал, что реально я чуть ли не один «забиваю» на этот важный момент. Большинство единогласно ответило, что в обязательном порядке устанавливает 301 редирект сразу при создании сайта. Более того, тут мне недавно попросили по разработке сайта добавить этот же самый 301 редирект для них, поскольку просьба пришла от продвигающей и конторы. Учитывая все эти моменты и «намеки судьбы» я понял 301 редиректу быть!

Зачем вообще нужен 301 редирект? — спросите вы — есть несколько ситуаций в которых его можно применить:

  1. Для склейки домена с www и без www. При этом показатели и ссылочный вес будет совмещаться, а то иногда бывает, что для домена с и без www они могут отличаться.
  2. При смене домена со старого на новый 301 редирект позволит опять же сохранить показатели и ссылочное (насчет тИЦ не знаю, но PR точно).
  3. При переносе страницы на сайте чтобы поисковики и посетители попадали на новую страницу вместо старой неработающей.
  4. Если есть пиаристые домены со ссылками, которые по каким-то причинам вами не используются, возможно, просто некогда, то теоретически можно использовать 301 редирект на другие свои сайты. Хотя это метод такой — дополнительная возможность что ли, основные все же первые три.

Вообще 301 редирект нужен как для пользователей, так и для поисковых роботов — позволяет сориентировать тех и других, что есть новый сайт, домен, страница и без лишних вопросов переадресовывает их туда. Кроме того 301 редирект произведет склейку показателей сайтов и позволит не потерять позиции в поисковых системах.

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

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

Простой редирект

Производится в файле .htaccess или httpd.conf для Apache. Самый простой вариант простого 301 редиректа для переадресации на новый домен выглядит следующим образом:

Redirect 301 / http://www.site.com/index.htm

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

Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm

Вот еще парочка примеров простого 301 редиректа:

RedirectPermanent / http://www.site2.com/
RedirectPermanent /old-catalog http://www.site2.com/new-catalog/

Можно поставить 2 условия — для редиректа сразу (нужно помнить что порядок следования важен):

Redirect permanent /test    http://www.test.com/
Redirect permanent /        http://enter.test.com/

Здесь при попадании пользователя или робота в директорию test он перенаправится на www.test.com, все остальные попадут на enter.test.com. Для этого 301 редиректа на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).

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

С модулем mod_rewrite вы сталкивались достаточно часто даже не подозревая этого. В частности речь идет про постоянные ссылки (permalinks) как полезный инструмент в seo оптимизации wordpress. Если в админке настроите эти самые ссылки и после этого зайдете в файл .htaccess, то обнаружите там целый ряд правил для переадресации через директиву RewriteRule. Кроме того нужно проверить чтобы была подключена опция FollowSymLinks.

Перенаправление домена с www на без-www

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

Чуть более понятный синтаксис

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

Редирект запросов без-www на домен с www префиксом

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

или же альтернативный вариант:

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

Вообще использование www в названии сайта само по себе устарело, но иногда до сих пор встречается. Если вы создаете новый сайт, то конечно сразу указываете везде без www, но если получили «готовый продукт», то нужно смотреть как домен отображается в выдаче Google и Яндекс — такой редитект и оставляете дабы ничего кардинально не менять.

301 редирект старого домена на новый:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Если хотите чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:

RewriteEngine   on
RewriteBase     /
RewriteRule     ^rewrite\.htm$  rewrite.html [R=permanent]

Для замены всех .htm файлов .html файлами:

RewriteEngine  on
RewriteBase     /
RewriteRule     ^(.*)\.htm$  $1.html [R=permanent]

301 редирект через PHP

Вся суть 301 редиректа через PHP, ASP, JavaScript в передаче клиенту заголовков:

HTTP/1.1 301 Moved Permanently
Location: http://www.newdomain.ru/newdir/newpage.htm

Для этого, например, в PHP используем:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm");
exit();
?>

Данный код лучше всего вставлять в начало PHP скрипта чтобы до него ничего не выводилось (echo или print).  За пояснение спасибо автору этой статьи где также найдете информацию про установку редиректа на ASP, ColdFusion и т.п., просто с php самый популярный вариант.

Примечания по 301 редиректу

Напоследок пару моментов по 301 редиректу, которые нужно помнить и с которым я так или иначе столкнулся:

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

Данную статью отлично дополняет 301 редирект – самое полное руководство от SeoProfy.

Если у вас есть что добавить по 301 редиректу — пишите:)

P.S. Постовой. В наше время каждый день появляется множество интересных интернет проектов. Хотите знать все про стартапы тогда читайте новый увлекательный блог StartupWay.
После аудита и оптимизации веб-проекта следует комплексная раскрутка сайтов в поисковых системах Google и Яндекс.

29.01.11

Категории: SEO, Продвижение сайтов.

Теги: , , , , ,

149 Comments
  1. Иван

    Немного не понял. А если страницы нивкоем случае не будут менять адресс, то 301 редирект не нужен?
    И второе, как правильно склеить www.site.ru и site.ru?

  2. Tod

    Иван, по первому — просто при создании сайта определяете основной домен (предпочтительно без www) и ставите 301 редирект чтобы потом не возникало вопросов.
    По второму — об этом есть в статье — см. пункт «перенаправление домена с www на без-www».

  3. Еремин

    Хотелось бы для увидеть как сделать редирект ссылок вида http://site.ru/link1.htm на http://site.ru/old/link1.htm. К примеру при обновлении сайта поставили новую CMS, а старую версию сайта перенесли в папку old/

  4. lab

    А как его убрать? Когда своему сайту менял зону. Из зоны com в зону ru поставил этот редирект в в .htaccess Все прошло удачно. А теперь мне надо снять, убрал то, что написал, но все равно когда набираешь сайт в зоне com перекидывает на ru. А мне этого уже не надо.

  5. Tod

    После второй коммента задаюсь вопросом — кто-то вообще пост читает?!
    При обновлении CMS есть 2 сложных момента — во-первых, сами ссылки страниц (ЧПУ) могли поменяться, поэтому тут во-первых, нужно узнать как сделать их такими же. Что касается самого 301 редиректа, то тут нужно пробовать что-то вроде

    Redirect permanent /        site.ru/old/

    Либо прописывать полные пути. Ну и, если что, немного поэкспериментировать с mod_rewrite в .htaccess и приведенным примерами в статье.
    Вариантов разных много, нужно самому пробовать и тестировать:)

  6. Tod

    lab, если убрал, то ничего перекидывать не должно, в противном случае глянь еще разок может где-то что-то да осталось. Просто так домен «переадресовываться» не будет.

  7. TEV

    Подскажите пожалуйста а как правильно сделать 301 редирект с site.ru на сайт.рф

  8. Serg

    Подскажите пожалуйста а как правильно сделать 301 редирект с site.ru на сайт.рф

    У меня например хостер такую услугу представляет.Спросите у своего может настроят.

  9. TEV

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

  10. Александр

    Здравствуйте!
    Может вопрос не совсем по теме, но все-таки спрошу.
    Я делал клиенту сайт на HTML, разместил его на хостинге. Затем через некоторое время обновил сайт — поставил на тот же хостинг под тем же именем домена сайт на Джумле. Ссылки первоначального варианта уже проиндексированы поисковиками, но клиент желает видеть новый сайт, так вот можно ли (и если да, то как) использовать редирект 301 чтобы когда найдя по запросу в поисковике старую ссылку (на HTML-страницу старого варианта сайта) кликнув по ней перенаправлялся на соответствующую ссылку нового варианта сайта, или хотя бы на главную страницу.
    Подскажите, пожалуйста, в этом вопросе. Или Ваше решение этого вопроса.

    П.С. старый сайт uvis-tor.com.ua (пока старый вариант не сносил), а новый вариант работает по ссылке uvis-tor.com.ua/index.php. По сути на одном доменном имени расположены 2 варианта сайта. Как перенаправить со старого на новый?

  11. Tod

    Александр, я думаю можно применить код из стать там где сказано о простом редиректе. А вообще, судя по тому что 2 сайта открываются на одном домене можно попробовать просто изменить имя файла index.html который, вроде как с него грузится, после этого автоматом будет открываться index.php.

  12. Александр

    Спасибо за скорый ответ, Tod.
    Я знаю, что если убрать index.html, то автоматом будет подгружаться сайт с index.php — просто хочу вообще удалить страницы старого варианта сайта с сервера (чтобы не было лишнего веса и по поисковым запросам человек не попадал на эти страницы, а автоматом перенаправлялся на новые страницы).

    Просто я не опытен в самом механизме создания редиректа — можете мне «показать на пальцах» как первокласснику (или дать ссылку где это показано), что и за чем делается? как создать файл .htaccess (или не нужно?), какой код туда поместить и как дальше?

    А то я просмотрел эту статью и мало чего понял, хотя сайты делаю, а с этим не знаком, аж стыдно…

    Можно на примере показать как будет выглядеть редирект, например по поиску «Линия для производства пеллет» (в Яндексе у меня самая первая ссылка в поиске выдается) на старом варианте ссылка http://uvis-tor.com.ua/production_pellets_linia_ogm15.html. Нужно, чтобы из поисковика (Яндекс, Гугл,.. т.д.) посетитель автоматом переносился сюда http://uvis-tor.com.ua/index.php?option=com_k2&view=itemlist&task=category&id=21:oborudovanie-kompleksnyie-linii-dlya-proizvodstva-pellet&Itemid=198
    или хотя бы на главную страницу сайта http://uvis-tor.com.ua/ (при условии, что я удалю старые страницы сайта). Помогите, как это реализовать?

  13. Tod

    Александр, точное решение я не подскажу, тебе нужно будет попробовать разные варианты из этой статьи (или возможно других). Еще раз внимательно глянуть пост и попробуй реализовать пару редиректов по моим примерам. Создаешь в корневой директории .htaccess, где пишешь что-то вроде:
    Redirect 301 / http://uvis-tor.com.ua/index.php
    Это для переадресации всех ссылок, а для конкретных страниц можно сделать:
    Redirect 301 http://uvis-tor.com.ua/page1.html http://uvis-tor.com.ua/page2.php
    Короче, нужно пробовать.

  14. Александр

    Спасибо, буду пробовать. Должно получиться.

  15. Pauk

    А где увидеть, что подключена опция FollowSymLinks, т.к. редирект не работает после переезда на новый хостинг.
    p.s. если www уже так устарел, то почему гугл еще с ним работает ?

  16. Андрей

    а если старая страничка запрещена в файл роботс, но на ней стоит 301 редирект на новую страничку. вопрос в том на новую страничку не передается запрет файл роботса????

  17. Tod

    Андрей, роботс запрещает индексацию, но если пользователь проходит по ссылке на эту страницу, то срабатывает 301 редирект. Передает ли он тиц и все такое — вопрос непонятный, но с другой стороны зачем запрещать в роботс страницу для которой и так установлен редирект? — думаю, лучше этого не делать.

  18. Андрей

    фишка в том что мне нужно убрать дубли на сайте index.php, тому и нада запретить все дубли иначе сайт умрет, а что б не терять ссылочную массу то 301 редирект, вот такая нелегкая задача, поетому и такой вопрос передает ли запрет через 301 — (

  19. Саша

    У меня вопрос: когда пользователь набирает в браузере урл старого сайта, его перебрасывает на новый автоматом? Или он все-же увидит старый сайт? Подскажите, пожалуйста.

  20. Tod

    Саша, как только вводит адрес и заходит на сайт, то сразу же перебрасывает на новый без захода по старому адресу.

  21. rasse1

    как проверить работает ли редирект или нет если речь идет о перенаправлении со старой страницы сайта на новую?

  22. Tod

    rasse1, зайти по старой ссылке и посмотреть перенаправляет ли сайт на новую.

  23. Alex

    А кто подскажет как можно сделать редирект со страниц типа site.ru/catalog/category/product/15-odegda-na-4-goda-104-rost/2811-narukavniki-vyazannie.html на страници типа site.ru/catalog/product/2811-narukavniki-vyazannie.html(т.е. соответственно убрать дубли и укоротить URL), только это надо сделать массово, таких страниц порядка 1500 шт.

  24. Tod

    Alex, для массового редиректа если только меняется структура, то можно использовать разные правила htaccess со всякими * или % — это точно нужно читать в документации, я не силен в этих правилах. Но такое сделать можно.

  25. Aleks

    А где именно это можно посмотреть, есть ссылочка?
    Спасибо!

  26. Tod

    Aleks, погулить документацию по htaccess, думаю в сети полно примеров как можно сделать редирект такой, я просто не делал, поэтому ссылочек не знаю.

  27. Илья

    Вопрос: 301 редирет считается «черным сео»? Если прятать линки?

  28. Tod

    Илья, что значит прятать линки? я не особо знаком с черным сео, 301 обычно используется для склейки www и без него + при переезде на другой домен, остальное хз)

  29. Илья

    Не палим тему))))

  30. Евгений

    А у меня такой вот вопросик, если я сделал 301-ый редирект «При смене домена со старого на новый 301 редирект позволит опять же сохранить показатели и ссылочное (насчет тИЦ не знаю, но PR точно).» Есть необходимость в удалении старого домена с «Яндекс Вебмастера?» или нет в этом необходимости? Просто старый домен нормально проиндексирован, показывает в «Вебмастере» вот такое: Загружено роботом — 89, Страниц в поиске 74. И на новом домене в «Вебмастере» показывает следующие: Загружено роботом — 3, Страниц в поиске 80.

  31. Tod

    Евгений, насчет вебмастера незнаю, тем более от яндекса. я просто сделал 301 редирект для домена пока он у меня был проплачен, 1-2 месяца повисел, потом удалился, а за это время новый сайт проиндексировался и все было норм.

  32. Евгений

    Спасибо. :) Будем надеяться и у меня так произойдет. :)

  33. trel

    Всем хай. Сделал 301 редирект через mod_rewrite, проблема — при заходе на
    mysite.ru/1/2/somesort/
    адрес страницы в браузере пользователя меняется
    mysite.ru/ind.php?a=1&b=2&c=somesort

    Как сделать, чтобы адрес оставался в виде mysite.ru/1/2/somesort/ ?

  34. Denis

    извините не понял domain\.com$ com — это поостоянный показатель или это домен вместо него указывать который стоит у меня?

  35. Tod

    Denis, вместо domain.com нужно подставить ваш домен сайта.

  36. Евгений

    сделал при помощи mod_rewrite все работает на отлично, правда повозился с местом установки кода, ну это мелочи.

  37. Misha

    Здравствуйте! А если домен уже склеен в поисковых системах без www, можно убрать 301 редирект?

  38. Tod

    Misha, насколько я понимаю, да можно убирать. То есть как я делал — перенес сайт на новый домен, на старом поставил 301 редирект, старый домен закончился и редирект отпал.

  39. krock

    А как он выглядит в ответе сервера, этот редирект?

  40. zigzag32ru

    «не сделал. А зря! Все началось достаточно прозаически – и меня есть один сайт,»
    у вас ошибка в начале статьи ( не и меня есть сайт , а у меня есть сайт :) я думаю так правильнее :)

  41. Tod

    zigzag32ru, спасибо, исправил ошибку.

  42. Corvet

    Все понятно и доступно! Спасибо автору за пост!!

  43. PaPa

    Tod, сайт очень полезный.
    Хотелось бы для people внести свою лепту. Как-то на одном своём сайте обратил внимание в статистике (года два-три назад — сейчас может по другому): без www. приходят — 70% юзеров, с www. — 30%. Так что убрав редирект, можно потерять 30% или около этого.

  44. Tod

    PaPa, не совсем понял зачем его вообще убирать? редирект для того и нужен чтобы пользователи заходящие по разному попадали в любом случае на сайт + поисковики видели его как 1 проекта, а не разные зеркала.

  45. Антон

    Спасибо, полезно!
    Такой вопрос, а как определить не имея доступа к админке, есть ли на сайте 301 редирект?

  46. Tod

    Антон, если вы о варианте редиректа с www на без www, то самое простое добавить в название сайта или убрать из него указанный префикс — увидите есть ли переадресация или нет.

  47. Антон

    Tod, спасибо.
    А если сайт доступен по 2 адресам одновременно (без www, и с www) значит редиректа нет?

  48. Tod

    Антон, да, можешь попробовать ввести URL этой статьи с www и увидишь что есть редирект — именно так он и работает.

  49. Антон

    Спасибо за оперативный ответ :)

  50. Владимир

    Подскажите пожалуйста как сделать 301 редирект.
    Нужно чтобы со страниц вида http://мой_сайт/страница1.html?start=300 перекидывало на http://мой_сайт/страница1, а с http://мой_сайт/страница5.html?start=7000 на http://мой_сайт/страница5

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.