301 редирект – самое полное руководство

301 редирект – самое полное руководство

Антон Рева
16 сентября, 2014

Если вы хотите правильно настраивать 301 редирект на своем сайте. То сегодня мы подготовили пошаговое руководство, в котором рассказываем и показываем все детали и нюансы.

Руководство по 301-му редиректу состоит из двух частей:

—    Наглядная детальная инфографика

—    Статья с примерами кода и само руководство (если вам сразу нужен пример кода, то лучше сразу пролистать инфографику)

301 редирект важен для поискового продвижения и в данном руководстве вы найдете ответы на самые основные вопросы как правильно применять редирект для разных ситуаций.

Переходим к просмотру инфографики:

301 редирект – пошаговое руководство - SeoProfy

Что такое редирект?

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

301 Moved Permanently

301 редирект является постоянным редиректом, который передает около 90-99% ссылочного веса. Данный редирект указывает, что страница перемещена по новому адресу и старый url следует считать устаревшим.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

302 редирект – временный редирект. Данный редирект передает 0% от ссылочного веса и, в большинстве случаев, не должен использоваться. На данный момент интернет работает по протоколу HTTP, который и определяет, как обрабатывать URL-адреса. В двух версиях этого протокола этот ответ сервера имеет разный статус ответа:

— HTTP 1.0: 302 ответ сервера это «Moved Temporarily » – текущий документ временно перемещен на другой URL.

— HTTP 1.1: произошло изменение ответа сервера на «Found» – текущий документ найден.

307 Moved Temporarily (HTTP 1.1 Only)

307 редирект в протоколе HTTP 1.1 стал приемником 302 редиректа. В то время, как основные поисковые боты, начнут рассматривать его как аналог 302, для почти всех случаев лучше всего использовать 301. Исключением из этого правила является, когда контент действительно переехал только временно (например, во время технического обслуживания) и поисковые системы уже понимают, что ваш сервер совместим с HTTP 1.1. Но, так как это практически невозможно определить, действительно ли поисковые системы поняли, что ваш сервер совместим с этим новым протоколом, то лучше использовать 302 редирект для контента, который был временно перемещен.

Другие виды редиректов

Существуют также и другие виды редиректов: Meta Refresh или с помощью JavaScript – которые выполняются на уровне страницы, а не на уровне сервера. Вот как выглядит типичный редирект Meta Refresh:

 

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

Канонизация домена сайта или как склеить домен?

Чтобы склеить домен с www на без www:

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

Для склейки с без www на с www:

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

Для того чтобы правильно выбрать на какой из вариантов склеивать, желательно посмотреть:

— как из этих вариантов больше находиться в топе
— для какого из вариантов больше страниц в индексе

Канонизация слеша в конце урла

При проектирование сайта важно определиться с одним форматом использование слеша в конце урла, так как для поисковых систем 2 урла вида:

— http://www.site.com/cat1/

— http://www.site.com/cat1

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

Для того чтобы удалить слэш в конце:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

Для того чтобы добавить слэш в конец адресной строки:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Редирект одной страницы на другую страницу:

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Редирект для дублей главной страницы

Этот код гарантирует, что любой адрес домашней страницы, который включает несколько версий прямых ссылок имени страницы, например, default.htm или index.html, будет перенаправлен на каноническую главную страницу, http://www.site.com:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ [NC]
RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1 [L,R=301]

Редирект каталога

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

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

Но, если урл старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом

RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]

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

Если вы вдруг переехали на другую платформу или CMS и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Примеры использования для защиты сайта от множественных дублей страниц

Редирект с разных доменов и субдоменов

Если вы купили несколько доменов в разных доменных зонах или разрабатывали новый сайт и повесили его на субдомен, а этот субдомен забыли закрыть от индексации, то необходимо сделать редирект на основной домен:

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

Таким, образом все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

Как удалить несколько слешей/тире в урле

Иногда «по случайности» в урле могут появится по несколько слешей, например, www.site.com/catalog////page-1.html. В таких необходимо делать 301 редирект на страницу с одним слешер www.site.com/catalog/page-1.html :

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

Аналогично, можно склеить в урле несколько дефисов в один: с www.site.com/catalog/page—1.html на www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)--(.*)$
RewriteRule . %1-%2 [R=301,L]

Как сделать редирект с любого урла на url только в нижнем регистре

Поскольку, поисковыми системами регистр букв учитывается, то при проектировании сайта желательно, чтобы все урлы были в нижнем регистре. Однако, если вы изначально упустили данный момент, то лучше всего воспользоваться следующим кодом для редиректа на уровне php-скрипта:

$lowerURI=strtolower($_SERVER['REQUEST_URI']);
if($_SERVER['REQUEST_URI']!=$lowerURI)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);
exit();
}

Как переехать на новый домен? Оптимальная стратегия 301 редиректа

Оптимальной стратегией переезда на новый домен учитывая пожелания 2-ух основных поисковых систем рунета Yandex и Google это:

— постраничный 301 редирект со старого сайта на новый.
— при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.

Тогда код для настройки редиректа на старом сайте может иметь следующий вид:

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www\.site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
а файл robots.txt для старого сайта:
User-agent: Yandex
Disallow:
Host: newsite.com

Генерация 301 редиректов

Если вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:

http://www.webconfs.com/htaccess-redirect-generator.php
http://www.rapidtables.com/web/tools/redirect-generator.htm

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

Как проверить 301 редирект

После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:

— вообще ли работает сайт: зайти на главную страницу)

— походить по основным разделам и страницам сайта

Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:

http://bertal.ru – максимально подробная информация по ответам сервера.

http://www.internetmarketingninjas.com/header-checker/.

Как и когда лучше использовать 301 редирект vs Canonical

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

301 — Эй, Поисковики: моя страница уже не здесь и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.

Canonical — Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передайте вес на мою предпочтительную страницу.

Когда лучше использовать 301 редирект

— По умолчанию — это предпочтительный метод

— Для страниц: если страница навсегда переехала или была заменена на новый адрес

— Для доменов: если сайт переехал на новый домен (продажа сайта, ребрендинг и т.д.)

— Для 404 страниц и контентом, который потерял свою актуальность (при условии соответствующего содержания). Например, если удален товар из определенного каталога, то можно сделать редирект на похожий товар, или на url-категории к которой пренадлежал данный товар.

Когда лучше использовать rel= «canonical»?

— Когда 301 редиректы не могут быть реализованы, или их внедрение займет слишком много времени

— Дублированный контент, но вы хотите сохранить обе страницы для людей (например, показывать на разных урлах разный размер одежды)

— Страницы с несколькими разными url по сути одной страницы (например, сортировки каталога, отслеживания партнерских ссылок, …)

— Кросс-доменов, когда оба сайта похожи, но похожий контент нужно оставить на каждом из доменов.

Итого

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

Ошибки при использовании редиректов

— Любой многошаговый редирект. Если есть возможность, то желательно не допускать многошаговых редиректов, чтобы он и быстрее сработал, и передалось максимум ссылочного веса.

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

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

— Редирект на не релевантные страницы/контент. Редирект всегда желательно проставлять на максимально релевантную страницу: или на похожую страницу, или на ветку каталога/раздела к которому принадлежала данная страница.

— Не правильный выбор использования rel=canonical vs 301 редирект. Смотри выше.

— Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе, желательно не сбивать поисковых роботов и отдавать 404 ответ.

— Редирект robots.txt. Так как, например, нужно прописывать  директиву Host для Яндекса при склейке доменов.

Надеемся что данное руководство станет вам шпаргалкой и помощником для использования 301-го редиректа для вашего сайта.

PS: если у вас возникли вопросы, смело задавайте их в комментариях, с удовольствием на них ответим!

Понравилась статья? Получай свежие статьи первым по e-mail

Оцените статью:
совсем плохоплохонормальнохорошокласс (64 оценок, средняя: 4,44 из 5)
Загрузка...
  • иван

    Здравствейте. Спасибо за статью, возник вопрос:
    хочу со старых страниц — 301 на новые переадресовать, но:

    #RewriteRule ^(.*)/products/(.*)$ $1/stretch-ceiling/catalog/$2 [R=301,L]
    Redirect 301 /products/ /stretch-ceiling/catalog/
    REWRITERULE ^([^/]*)/$ /index.php?cat=$1&%{QUERY_STRING} [NC,L]

    вот такие записи, и редиректят на /stretch-ceiling/catalog/?cat=products

    как с этим бороться?

  • Diana Ziletskaya

    Здравствуйте. Подрядчик советует убрать 301 редирект с http://сайт/index.php на http://uсайт/ заменив его на 404 ошибку. Ваше мнение?

    • 1. как по мне: логичнее 301 редирект, так как эта страница полный дубль главной.

      2. но, если подрячик сильно настаивает, то можно и 404 ошибку.

    • 1. Если есть входящие ссылки на http://сайт/index.php то логичнее все-таки сделать 301.
      2. Другой вопрос в том, чтобы найти эту ссылку на сайте и исправить на http://uсайт/ тогда и не придется что-либо делать… 🙂

  • Где и как можно отследить во сколько шагов происходит редирект, не вникая в весь код htaccess (допустим у меня 1000 строк и перебирать каждую не совсем хотелось бы)?

    • через screaming frog можно.
      только в настройках вкл. Always Follow Redirects.

      • Спасибо!
        Как раз пару часов назад установил.

  • Вот это проработка материала, спасибо!!!

  • Олег Попенков

    По множественному слещу у Вас неправильно прописан редирект, вот правильный:

    RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
    RewriteRule ^ %1/%2 [R=301,L]

    это же касается и дефисов

  • pashavanholt

    не работает!

    RewriteCond %{HTTP_HOST} (.*)
    RewriteCond %{REQUEST_URI} /$ [NC]
    RewriteRule ^(.*)(/)$ $1 [L,R=301]

    • Татьяна

      Доброго времени суток!
      Такая же ситуация.
      Сайт сделан на drupal 7.
      Может есть альтернативный вариант?
      Во избежания конфликтов оставила только этот код. Все равно не сработал.

      • Татьяна

        Видно, никто не поможет)

  • Ivan

    Здравствуйте! А как переехать на новый домен, если структура и контент сайтов различаются, но тематика одна? Т.е. нужно перевести на новый домен лишь некоторые страницы. Нужно ли также в таком случае прописывать директиву Host на новый домен в старом robots.txt, ведь по сути такие сайты не являются зеркалами?

    • вы хотите полностью переехать?

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

      если будет функционировать: то просто единичные 301 редиректы делаете.

      • Ivan

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

        «вы хотите полностью переехать?»
        По сути со старого сайта необходимы около 300 страниц из 1.5 тысяч. Функциональность старого сайта не волнует, но волнуют параметры вроде PageRank, тИЦ и вообще рейтинги доверия поисковых систем. Можно ли вообще их сохранить, не переезжая полностью?
        А переезжая полностью получится 1 200 страниц 404 ошибок — и посетителю неприятно и для меня лишнее время индексирования.

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

          2. в первую очередь обратите внимание на страницы с обратными ссылками:
          выгрузите с google search console, yandex.webmaster, ahrefs, mj, …
          и вот для этих ссылок точно нужно заморочиться и сделать редиректы.

          • Ivan

            К более тысяче страниц релевантных нет вообще. К 300ам страницам, которые нужны, редирект,конечно, сделаю.
            «если нет релевантных, то, ладно пускай уже будет 404 или лучше 410» — т.е. делать все-таки полный редирект? Не помешает ли такое количество несуществующих страниц новому сайту, ведь по сути от этих страниц и уходили на новый?
            ___________________
            Про обратные ссылки понял,Вы правы, это необходимо.
            А если сделать редиректы только именно этих страницы (с обратными ссылками) и тех страниц,у которых есть релевантные,как вы думаете, что из этого получиться, передадутся ли новому сайту основные параметры старого?

          • передайте главное вес со страниц:
            — которые самых трафиковые: см. по аналитике, семрашу, …
            — на которые стоят ссылки

            и в общем, это то что «в теории» поможет передать макс. веса.

          • Ivan

            эти 300 страниц, на которые есть релевантные, и есть самые трафиковые — остальные либо дубли, либо вообще без индекса — поэтому оставили только их.

            Спасибо Вам большое!
            Итак, вся последующая работа упирается только в 301 редирект:
            1)редирект страниц из топа;
            2)редирект страниц с обратными ссылками.
            Директиву хост не трогаем,правильно?

          • по ответам для старого сайта:
            301: для всех важных
            410/404: для остальных
            200: для robots.txt и прописываем новый домен для host

          • Ivan

            Все понял!
            Выражаю огромную благодарность, до вас нигде не мог найти ответы на решение данной проблемы.

  • Vladimir

    А если мне необходимо настроить редирект со слеша на без слеша для всех страниц сайта, кроме страниц http://домен/ru/ или http://домен/en/ Так как нежелательно убирать слеш для этих страниц. Возможна такая конструкция?

    • да, конечно.
      попросить вашего разработчика,
      добавить в регулярку исключения по этим подпапкам.

      • Vladimir

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

        • попробуйте вот так:
          RewriteCond %{HTTP_HOST} (.*)
          RewriteCond %{REQUEST_URI} !^/ru/$
          RewriteCond %{REQUEST_URI} !^/en/$
          RewriteCond %{REQUEST_URI} /$ [NC]
          RewriteRule ^(.*)(/)$ $1 [L,R=301]

          • Vladimir

            Благодарю, Антон! Все работает.

  • Александр

    Отличная статья, но я нуждаюсь в вашей помощи, как должен правильно выглядеть редирект, если старые страницы имеют вид http://domen/cat?_=1449059506032&start=200 где _=1449059506032& нужно вырезать и сделать перенаправление на страницу вида http://domen/cat?start=200

    1449059506032 — это переменная числа на каждой новой странице отличные

  • Всем привет. Redirect прописываться в файле .htaccess ?

  • Андрей

    Добрый день. Подскажите, а можно ли убрать 301 редирект. К примеру, товар появился снова в продаже ( через полгода), а до этого был отключен и через 301 редирект связан с материнским разделом.

    • да, конечно, без проблем.
      только лучше загоните это товар принудительно через google search console и fetch as google.

      • Андрей

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

        • 1. пингуйте страницу через fetch as google => будет индексация.
          2. настраивайте перелинковку на этот товар => будет вес.

  • Yura Kargin

    Добрый день! У меня вот такая вот головоломка и не знаю как правильно поступить: есть часть страниц (товары) которые отлично оптимизированы и попадают на первые страницы поисковиков по разным запросам. Из группы товаров попадает страница конкретного товара. Но этого товара сейчас нет в продаже. Он появится ну там через -3-4 недели. Люди находят страницу этого товара/ переходят/смотрят, что товара нет в наличии/уходят/…и вот в чем головная боль: я думаю на время, пока нет этого товара в наличии — сделать 302 редирект, именно 302, чтоб та основная страница не отдавала своего веса и направить на общий раздел или похожий товар…когда товар появится в наличии, тогда убрать 302 редирект…какие риски, кто-то с таким сталкивался?

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

      • Yura Kargin

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

        • 1. это я понимаю, но, в самом вверху сделать альтернативные товары: в так случае если человека заинтересует он перейдет, а если нет, то после 302 редиректа он тоже просто уйдет со страницы.

          2. хорошо ждем результаты эксперимента.

          • Yura Kargin

            Вопрос в чем: мы ставим 302 не на совершенно другой товар, а аналогичный…и в поисковом запросе, который в топе — слово/фраза образного товара, т.е. группы товара, а не определенного имеющего свой уникальный артикул…например, вы ищете: «маска для плаванья» — вы хотите купить просто маску, а какую — вы еще не знаете, что найдете подходящее, то и купите…и вот здесь мы пытаемся заменить товар…ну пока второй день 302 редиректа — полет нормальный 🙂

          • ага, понятно.
            так, тут желательно сделать отдельную категорию/список/тег с полным списком товаров «маскИ для плавания» и качать эту категорию.
            таким образом это позволит вам решить кучу проблем.

          • Yura Kargin

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

          • Юрий, ок ок.
            я вас понял, думаю и вы меня поняли )).
            ждем с результаты эксперимента.

  • Владислав Андрійович

    Добрый день. Сайт стоит а движке ОпенКарт версии 2.3. При настройке внутренней оптимизации возник вопрос.
    site.blablabla/?route=product/product&product_id=4224
    site.blablabla/low-rise-thong-m-l-green
    Обе страницы это один и тот же товар.
    Если эти дубли убрать то движек перестанет отдавать страницы вот в чем прикол). И в админке переход на страницу товара отвалится.
    Можно ли решить вопрос каноникалом?

    • можно, если вся перелинковка также будет настроена на канонические страницы.
      но, вы посмотрите там же точно есть разные решения для opencart для правильной настройки чпу урлов.

      • Владислав Андрійович

        решения есть, но если бы они были топ 1 везде — вопросов не возникало бы) спасибо за ответ

  • novator

    Если сайт прокачивается дропами с 301-ым редиректом, могут ли быть санкции Google, видно ли редиректы в Google Webmaster, Analytics?

  • Татьяна

    Спасибо!