301 редирект в SEO
Редирект 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]
С помощью таких не хитрых махинаций мы избавимся от дублей страниц, тем самым улучшив нашу внутреннюю оптимизацию и соответственно качество сайта.
Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂
Рекомендую к прочтению

Принесу пользу вашему проекту
Заявка на бриф
Заполните несколько полей
Здравствуйте.
Для чего вам index.html?
Сначала склейте зеркала.
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
А потом уже php -> html. Пример, который вы указали — перенаправит 1 страницу php на html.
Огромное вам спасибо. что-то должен?
9 декабря 2017 г., 10:22 пользователь Disqus написал:
Конечно нет 🙂
Доброго времени!
Есть урл domain.ru/old-category/old-category/old-category/old-category/old-category/
хочу делать редирект по вашему методу, почему то не получается.
Подскажите пожалуйста, как делать редирект типа:
domain.ru/old-category/old-category/new-category/old-category/old-category/
Спасибо!
Попроьуйте:
RewriteRule ^old-category/old-category/old-category/(.*)$ /old-category/old-category/new-category/$1 [R=301,L]
Спасибо большое за ответ, попробую.
Не получилось.
Все ссылки на все последующие категории редиректит на /new-category/
Тогда нужно экспериментировать или обратиться к программистам (что я и делаю, если не получается своими силами сделать).
Вот пример такого же редиректа с моего сайта, который работает:
RewriteRule ^blog/web-analitika/(.*)$ blog/$1 [R=301,L]
Каждая статья без проблем редиректится через новую категорию.
Этот пример и пример в моем вопросе совершено разные….
Лэндинг и сайт на WP — это 2 разных домена?
На одном домене: https://сайт-на-вордпресс/подкаталог/лендинг/
Скорее всего вы не верно настроили редирект с www на без www.
Т.к. ВСЕ страницы будут подчиняться этому правилу.
Добрый вечер! Мне нужно приклеить один домен (site1 )к другому (site2) для передачи ТИЦ и PR. Я создал в корне сайта — зеркала (site1) robots.txt в котором прописал User-agent: Yandex Host: site2.ru Затем я создал в корне site1 — .htaccess и прописал туда RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1… Подробнее »
Насчет «При этом строчки в роботсе у меня должны быть идентичны роботсу site2.» — не совсем понял. В остальном — всё верно. На site1 правите robots.txt, в .htaccess настраиваете 301 редирект на site2 всех страниц, кроме файла robots.txt. Проверить — если редирект работает, скорее всего всё сделали верно. Ждать —… Подробнее »
Здравствуйте! Подскажите пожалуйста как лучше прописать 301редирект в таком случае:.
Сайт переехал на новый движок и поменялась структура, сократился уровень вложености страниц, раньше было в таком виде:
/blog/2014/03/…
/blog/2015/08/…
/blog/2016/05/…
нужно сделать 301 редирект всех новостей на: /blog/
Как это лучше воплотить?
Заранее спасибо за помощь.
А сами алиасы постов остались старыми?
Да. старыми. Спасибо, уже разобрались, может кому то пригодится:
RedirectMatch 301 ^(.*)/blog/d{4}/d{2}/(.*)$ $1/blog/$2
У меня сайты аффилиаты. Только сегодня узнал о такой теме и что это не есть хорошо для сео. Вот старый сайт http://teplo123.com/ (лэндинг) , а вот новый http://montazh-otoplenija.by/ (многостраничник). Новый по одному ВЧ в топе яндекса и это большую половину клиентов мне даёт. При настройке редиректа ничего же не упорится?… Подробнее »
При 301 редиректе чаще всего проблем не возникает, Но это не значит, что их не бывает.
Как настроить 301 редирект — смотрите в статье.
Здравствуйте.
Редирект должен быть постраничным. Перенаправления «всё на главную» — это далеко не лучший вариант.
Но если нет возможности сделать правильно, то ваш вариант подойдет. Выделяйте трафиковые страницы — их клейте, а остальное редиректите не на главную, а хотя бы на ближайшие категории.
записал в файл хтасес пути по вашему примеру Redirect 301 /old-post.html http://new-site.ru/new-post.html и ничего не работает, что я не правильно делаю
Смотрите видео, там был другой еще вариант редиректа 1 страницы. Они работают в зависимости от вашего сервера.
подскажите, надо-ли делать редирект со страниц сайта после перехода урлов с кирилицы на латиницу?
Да, конечно.
У вас сменились все ЧПУ.
Скажите , почему вы удаляете мои сообщения? Я что-то запрещённое разве написал? вроде же по теме обсуждаем? Очень странная ситуация.. и куда вам писать в ЛС то же не ясно?
Я не удаляю сообщения вообще 🙂
Все сообщения проходят модерацию + антиспам фильтр.
Чтобы написать в ЛС — достаточно в контакты пройти.
а могу я каждую страницу отдельно перенаправить, например, http://tretiiglaz.narod.ru/t1.html на http://tretiiglaz.ru/1.html ? я ничего не понимаю, а сайт переношу выборочно (не все страницы)
Да, конечно.
Можете перенаправлять только конкретные страницы.