301 редирект в SEO

Обновлено: 22 мая, 2020

Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!

Так же при 301 редиректе происходит склейка тИЦ (читаем что такое тиц) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.

Как настроить 301 редирект в htaccess

Файл под названием .htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в работе SEO специалиста.

Общий шаблон для .htaccess, которым мы будем пользоваться:

Options +FollowSymLinks
  RewriteEngine On
  #Здесь указываем правила

Все правила записываются в виде:

RewriteCond [Сравнение] [Условие] [Флаги]
RewriteCond [Сравнение] [Условие] [Флаги]
RewriteRule [Шаблон] [Подстановка] [Флаги]

Теперь непосредственно займемся переадресацией и разберем конкретные примеры.

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

Примеры использования 301 редиректа

Редирект с index.php на главную

Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:

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

Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html

Склеиваем алиасы сайта

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

RewriteCond %{HTTP_HOST} ^vash-sait.com$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]

Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила.

Редирект с www на без www

Этот способ я уже описывал ранее, но повторюсь. Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:

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

Редирект с домена без www на домен с www

Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:

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

301 редирект страниц со слэшем и без

Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:

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

Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:

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

Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:

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

где, «//» можно заменить на «—» или любые сдвоенные символы в урле.

Массовая замена категории

Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых перенаправлений юзаем:

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

Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:

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

Редирект на новую страницу

Самый простой редирект со страницы на страницу, для это просто пропишите так:

Redirect 301 /old-post.html http://new-site.ru/new-post.html

Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).

Редирект для url с параметрами

Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:

RewriteCond %{QUERY_STRING} sort=articles
RewriteRule .* http://site.ru/page.php? [R=301,L]

Работаем с расширениями

Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):

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

Правильный 301 редирект на новый домен

Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.site\.ru
RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]

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

Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂

В SEO с 2010 года. С 2013 года работаю как частный SEO-эксперт, продвигаю свои и клиентские сайты, а так же веду блог Romanus.ru.
Что мне еще стоит почитать?

Рекомендую к прочтению

4.6 5 votes
Рейтинг статьи
Подписаться
Уведомление о
79 Комментарий
Inline Feedbacks
View all comments
Romanus
4 лет назад

Здравствуйте.
Для чего вам index.html?
Сначала склейте зеркала.
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

А потом уже php -> html. Пример, который вы указали — перенаправит 1 страницу php на html.

Опель вектра б (Iskander)
4 лет назад
Ответить  Romanus

Огромное вам спасибо. что-то должен?

9 декабря 2017 г., 10:22 пользователь Disqus написал:

Romanus
4 лет назад

Конечно нет 🙂

Qara Bazar
4 лет назад

Доброго времени!
Есть урл domain.ru/old-category/old-category/old-category/old-category/old-category/
хочу делать редирект по вашему методу, почему то не получается.

Подскажите пожалуйста, как делать редирект типа:
domain.ru/old-category/old-category/new-category/old-category/old-category/
Спасибо!

Romanus
4 лет назад
Ответить  Qara Bazar

Попроьуйте:
RewriteRule ^old-category/old-category/old-category/(.*)$ /old-category/old-category/new-category/$1 [R=301,L]

Qara Bazar
4 лет назад
Ответить  Romanus

Спасибо большое за ответ, попробую.

Qara Bazar
4 лет назад
Ответить  Romanus

Не получилось.
Все ссылки на все последующие категории редиректит на /new-category/

Romanus
4 лет назад
Ответить  Qara Bazar

Тогда нужно экспериментировать или обратиться к программистам (что я и делаю, если не получается своими силами сделать).
Вот пример такого же редиректа с моего сайта, который работает:
RewriteRule ^blog/web-analitika/(.*)$ blog/$1 [R=301,L]

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

Qara Bazar
4 лет назад
Ответить  Romanus

Этот пример и пример в моем вопросе совершено разные….

Romanus
4 лет назад

Лэндинг и сайт на WP — это 2 разных домена?

Виктор
4 лет назад
Ответить  Romanus

На одном домене: https://сайт-на-вордпресс/подкаталог/лендинг/

Romanus
4 лет назад
Ответить  Виктор

Скорее всего вы не верно настроили редирект с www на без www.
Т.к. ВСЕ страницы будут подчиняться этому правилу.

Михаил Алмаметов
4 лет назад

Добрый вечер! Мне нужно приклеить один домен (site1 )к другому (site2) для передачи ТИЦ и PR. Я создал в корне сайта — зеркала (site1) robots.txt в котором прописал User-agent: Yandex Host: site2.ru Затем я создал в корне site1 — .htaccess и прописал туда RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1… Подробнее »

Romanus
4 лет назад

Насчет «При этом строчки в роботсе у меня должны быть идентичны роботсу site2.» — не совсем понял. В остальном — всё верно. На site1 правите robots.txt, в .htaccess настраиваете 301 редирект на site2 всех страниц, кроме файла robots.txt. Проверить — если редирект работает, скорее всего всё сделали верно. Ждать —… Подробнее »

Денис Николаевич
4 лет назад

Здравствуйте! Подскажите пожалуйста как лучше прописать 301редирект в таком случае:.

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

/blog/2014/03/…

/blog/2015/08/…

/blog/2016/05/…

нужно сделать 301 редирект всех новостей на: /blog/

Как это лучше воплотить?

Заранее спасибо за помощь.

Romanus
4 лет назад

А сами алиасы постов остались старыми?

Денис Николаевич
4 лет назад
Ответить  Romanus

Да. старыми. Спасибо, уже разобрались, может кому то пригодится:

RedirectMatch 301 ^(.*)/blog/d{4}/d{2}/(.*)$ $1/blog/$2

Олег Шафалович
4 лет назад

У меня сайты аффилиаты. Только сегодня узнал о такой теме и что это не есть хорошо для сео. Вот старый сайт http://teplo123.com/ (лэндинг) , а вот новый http://montazh-otoplenija.by/ (многостраничник). Новый по одному ВЧ в топе яндекса и это большую половину клиентов мне даёт. При настройке редиректа ничего же не упорится?… Подробнее »

Romanus
4 лет назад

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

Romanus
5 лет назад

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

Дмитрий Пайрокул
5 лет назад

записал в файл хтасес пути по вашему примеру Redirect 301 /old-post.html http://new-site.ru/new-post.html и ничего не работает, что я не правильно делаю

Romanus
5 лет назад

Смотрите видео, там был другой еще вариант редиректа 1 страницы. Они работают в зависимости от вашего сервера.

Дмитрий Пайрокул
5 лет назад

подскажите, надо-ли делать редирект со страниц сайта после перехода урлов с кирилицы на латиницу?

Romanus
5 лет назад

Да, конечно.
У вас сменились все ЧПУ.

surikat
5 лет назад
Ответить  Romanus

Скажите , почему вы удаляете мои сообщения? Я что-то запрещённое разве написал? вроде же по теме обсуждаем? Очень странная ситуация.. и куда вам писать в ЛС то же не ясно?

Romanus
5 лет назад
Ответить  surikat

Я не удаляю сообщения вообще 🙂
Все сообщения проходят модерацию + антиспам фильтр.
Чтобы написать в ЛС — достаточно в контакты пройти.

Olga Galanina
5 лет назад

а могу я каждую страницу отдельно перенаправить, например, http://tretiiglaz.narod.ru/t1.html на http://tretiiglaz.ru/1.html ? я ничего не понимаю, а сайт переношу выборочно (не все страницы)

Romanus
5 лет назад
Ответить  Olga Galanina

Да, конечно.
Можете перенаправлять только конкретные страницы.

79
0
Поговорим на эту тему? Пиши комментарииx