301 редирект: как его правильно настраивать и когда использовать

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

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

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

Асеев Василий автор статьи Руководитель компании / Интернет маркетолог
  • 10+ стаж работы в
    интернет маркетинге
  • 103 написано тематических
    статей
социальные
сети:
Содержание
Чем может помочь 301 редирект

Что такое 301 редирект и с чем он может помочь?

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

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

В зависимости от навыков программирования и расположения самого ресурса перенаправление можно настроить разными способами. Например:

  • Через админ-панель или дополнительные плагины CMS-системы;

  • Используя языки программирования HTML и PHP;

  • Через файлы .htaccess или nginx.conf;

  • На хостинге;

  • С помощью специальных сервисов и т.д. 

О некоторых из этих способов мы подробнее поговорим ниже.

Другие методы настройки перенаправлений

301 редирект — это не единственный способ увести человека с неактуальной страницы на нужную. Помимо него существуют ещё и другие виды редиректов:

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

  • 302. Это временная мера, которая обычно используется при проведении каких-то технических работ на сайте. Ещё вариант применения — у вас закончилась какая-то вариация товара, и вы временно хотите перенаправить пользователей на карточку продукта-заменителя. Если используется этот способ, то браузер получает сигнал, что новый адрес временный, поэтому не кэширует содержимое.

  • 303. Такой способ тоже используется редко. Полезен он может быть в случае, если человек искал что-то на сайте, а по запросу нашёлся только один результат. Тогда есть смысл сразу перевести его не к результатам поиска, а на нужную страницу.

  • 305. Используется, когда для доступа нужен прокси-сервер. Работает он примерно так: после обращения браузера, сервер выдаёт редирект и показывает адрес прокси, а потом браузер повторно запрашивает доступ и заходит на страницу уже через него.

  • 307. Ещё одно временное решение, которое создано для уточнения 302. Если важно сохранить метод отправки запроса (например, GET, POST или HEAD) — используйте 307.

  • 308. Это постоянная переадресация, и если не указано иное, браузер кэширует контент, а поисковая система передаёт весь вес страницы по новому адресу. В целом отличия между ним и 301 минимальны. Например, недавно Google даже подтвердил, что 308 редирект для него значит то же, что и 301.

  • Атрибут canonical. Часто применяется для устранения дублей страниц. Для того чтобы его применить, в коде донора нужно указать атрибут canonical и тут же дать ссылку на основную страницу. Тогда помимо трафика, туда будет перенаправляться и накопленный вес всех дублей. Так вы показываете поисковику, что у вас есть несколько версий одной страницы, но конкретно эта для вас приоритетная. 

В каких случаях применять 301 редирект

Когда применяется 301 редирект?

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

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

  • Изменения в URL отдельных разделов. Например, раньше статьи на вашем сайте располагались по адресу /posts, а теперь вы решили переименовать этот раздел в /blog. В этом случае все старые ссылки начнут выдавать ошибку, поэтому обязательно нужно перенаправить людей по новому адресу.

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

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

  • Склейка зеркал, связанных с разными вариантами написания адреса (с www и без, с защищённым протоколом и без, со слешем в конце и без и т.д.). Для этого нужно выбрать основную версию, например, с защищённым протоколом, без www и без слеша, и настроить на неё перенаправление с остальных вариантов.

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

Что выбрать: 301 редирект или canonical?

А всё-таки: 301 редирект или canonical?

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

Проблема

301

Canonical

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

Подходит

Не подходит

Страница переехала в другое место и уже не будет возвращена

Подходит

Не подходит

У сайта изменилось имя и нужно перенаправлять людей на другой домен

Подходит

Не подходит

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

Не подходит

Подходит

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

Подходит

Не подходит

Одна и та же страница, но с добавленными к URL параметрами (например, разные страницы одного каталога, страницы с применёнными фильтрами)

Не подходит

Подходит

У вас есть два ресурса с похожим контентом, но вы хотите, чтобы в ранжировании участвовал только один из них (приём подойдёт только для Google)

Не подходит

Подходит

Основной смысл в следующем: если вам нужно, чтобы обе страницы остались открыты для посетителей — используйте атрибут canonical. Если это для вас неважно — 301 редирект.

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

В целом все подходы к работе с редиректами можно поделить на:

  • Серверные. Плюс такой переадресации — она происходит мгновенно, так что посетители даже не успевают ничего заметить. Но настроить её не так просто. Для этого вам потребуется доступ к серверной части сайта и хотя бы базовые знания языков программирования. Самые популярные способы настройки на серверной части кода — через файлы .htaccess и nginx.conf или с помощью языка программирования PHP.

  • Браузерные. Настраиваются на уровне клиентской части кода, за счёт чего перенаправление происходит медленнее (ведь нужно подождать пока страница загрузится в браузере). К таким способам относятся настройка в HTML-коде и с помощью JavaScript.

Часть кода

Иногда встречаются запросы настроить DNS редирект, то есть выполнить переадресацию на уровне домена. Но такой способ слишком энергозатратный. Кто-то говорит, что такое вообще невозможно, потому что перенаправление — это функция протокола HTTP, а не DNS. Кто-то изобретает костыли, с помощью которых им всё-таки удаётся реализовать такое перенаправление. В любом случае, мы не советуем так заморачиваться. Для настройки переадресации есть гораздо более удобные способы, о которых мы и поговорим дальше.

Настройка редиректа через файл .htaccess

Это относительно простой, и поэтому популярный метод. Но подойдёт он только тем сайтам, которые работают на сервере Apache.

Чтобы реализовать перенаправление, нужно зайти в файл .htaccess (или создать его в папке сайта) и внести туда правки. В начало файла нужно подставить код, примеры которого мы дадим ниже. Конечно, вместо наших ссылок в него нужно подставить свои данные.

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

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

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www. soldimarketing.ru [NC]

RewriteRule ^(.*)$ http://soldimarketing.ru/$1 [R=301,L]

Обратная ситуация (без www на www):

RewriteEngine On

RewriteCond %{HTTP_HOST} ^soldimarketing.ru

RewriteRule (.*) http://www.soldimarketing.ru/$1 [R=301,L]

  • Редирект с http на https

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Обратная ситуация (с https на http):

RewriteEngine On

RewriteCond %{SERVER_PORT} ^443$ [OR]

RewriteCond %{HTTPS} =on

RewriteRule ^(.*)$ http://soldimarketing.ru/$1 [R=301,L]

  • Изменение домена, то есть редирект всего сайта на другой адрес

RewriteEngine On

RewriteCond %{HTTP_HOST} soldimarketing-old.ru

RewriteRule (.*) http://soldimarketing-new.ru/$1 [R=301,L]

  • Перенаправление с одного URL на страницу с другим адресом

Самый простой способ:

Redirect 301 /old-page https://soldimarketing.ru/new-page

Редирект с GET параметрами:

RewriteCond %{QUERY_STRING} utm_source=yandex

RewriteRule ^index.php https://soldimarketing.ru/blog? [R=301,L]

Без параметров:

RewriteRule ^(.*)old_page$ https://soldimarketing.ru/new_page [R=301,L]

  • Переадресация со страницы со слешем на без слеша

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} ![^\/]$

RewriteRule ^(.*)\/$ /$1 [R=301,L]

Обратная ситуация (без слеша на слеш):

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} !\/$

RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

Синтаксис .htaccess

Синтаксис для регулярных выражений в .htaccess

Как вы, наверное, заметили, в файле используется особый синтаксис. То есть специальные знаки, которые несут в себе какое-то значение. Вот мини-словарь этого синтаксиса, который простыми словами объясняет значение каждого символа.

Символ

Обозначение

.

Любой знак (то есть вместо него можно подставить всё что угодно)

()

Выделение группы

(.*)

Любой набор знаков

^

Начало строки

$

Конец строки

|

Альтернативный выбор (или-или)

?

Ставится после какого-то символа или группы символов и означает, что он (или они) могут как быть, так и отсутствовать

*

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

[]

Перечисление допустимых диапазонов

[0-9]

Допустимы цифры от 0 до 9

[a-z]

Допустимы все буквы латинского алфавита в нижнем регистре

[A-Z]

Допустимы любые символы на латинице в верхнем регистре

[a-Z]

Буквы на латинице в любом регистре

[^0-9], [^a-z] и т.д.

Недопустимые символы

\w

Вместо него может быть цифра, буква или подчёркивание

\d

Заменяет любую цифру

\D

Заменяет любой знак, кроме цифры

Другие способы настройки редиректа на сервере

Nginx

Если вы выяснили, что ваш сайт работает не на Apache, то, скорее всего, он управляется Nginx. Это второй по популярности веб-сервер. Здесь всё работает совершенно по-другому, и синтаксис тоже очень отличается. Перенаправление прописывается в файле nginx.conf, который можно найти в корневой папке сервера.

Пример кода для файла nginx.conf:

if ($host = 'www.soldimarketing.ru' ) {

  rewrite ^(.*)$ https://soldimarketing.ru$1 permanent;

}

PHP-условие

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

Для того чтобы её сделать, нужно зайти в файл index.php и прописать там примерно такой код:

if($_SERVER['REQUEST_URI'] == "soldimarketing.ru/old") {

 header("Location: soldimarketing.ru/new",TRUE,301);

 exit();

}

Ещё можно использовать другой вариант кода через функцию header:

header('HTTP/1.1 301 Moved Permanently');

header('Location: https://www.soldimarketing.ru/new');

exit();

Способы настройки браузерной переадресации

Способы настройки браузерной переадресации

Если у вас нет доступа к серверу (или такие методы просто кажутся вам слишком сложными), можно обратить внимание на один из способов браузерного перенаправления.

HTML-редирект (metarefresh)

Есть два типа такой переадресации: 

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

  • Отложенная. Происходит через несколько секунд после загрузки. Время можно указать при настройке. Некоторые поисковики (например, Google) воспринимают такой вид перенаправления, как временный.

Чтобы осуществить простой редирект страницы с помощью HTML-разметки, можно прописать примерно такой код:

<meta http-equiv="refresh" content="0;https://soldimarketing.ru/new&quot;&gt;

Конечно, вместо ссылки на наш сайт нужно подставить ту, на которую вы хотите сделать перенаправление. В нашем примере в атрибуте “content” стоит 0, что означает мгновенную переадресацию. Если вы хотите сделать временное перенаправление, укажите в этом атрибуте нужное количество секунд (оптимально до 5). 

Такой скрипт нужно добавлять в раздел head HTML-кода.

JSP (JavaScript)

Google рекомендует использовать такой способ только если все предыдущие вам не подошли. Потому что если в системе вдруг возникнут какие-то проблемы с отрисовкой контента страницы, то и ваш редирект не будет распознан. А заранее это проверить и предвидеть не получится. Также этот способ не подойдёт для больших ресурсов со сложной архитектурой.

Код выглядит так:

<script type="text/javascript" src="redirect.js"></script>

<script type="text/javascript">

  location="https://soldimarketing.ru/new&quot;;

</script>

После “location” нужно указать адрес, по которому должно вести перенаправление.

На устаревших языках программирования (например, ASP, ASP.NET, Ruby on Rails, PERL и т.д.) мы не стали останавливаться. Сейчас их почти не используют, поэтому такая информация мало для кого будет актуальной.

Постоянная переадресация

Создание постоянной переадресации через настройки и плагины CMS

Если сайт сделан на CMS, поработать с редиректами можно через настройки системы. Например, там можно найти тот же файл .htaccess и вставить туда готовый код. Или, например, как в CMS Joomla, зайти в раздел “Компоненты”, а потом перейти в “Перенаправления” и настроить всё там. В ресурсах на Tilda настройки переадресаций можно найти по пути: “Настройки сайта” — “SEO” — “Редиректы страниц (Code 301)”.

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

  • Для сайтов на Wordpress это: Safe Redirect Manager, Redirection, Simple 301 Redirects и т.д. Также функции управления переадресациями встроены во многие SEO-модули;

  • Для OpenCart — Менеджер 301 редиректов и другие; 

  • Для Bitrix есть: SEO редиректы, Редирект мастер, Простой редирект страниц и другие.

При использовании плагинов всё достаточно просто: нужно только ввести в соответствующие поля старый URL и новый, на который вы планируете настроить переадресацию. Плюс, выбрать какой вид перенаправления это будет (301, 302 или любой другой). Иногда есть возможность выбрать и какие-то ещё дополнительные параметры.

Автоматическое создание скрипта

Чтобы облегчить работу с кодом и не допустить ошибок из-за невнимательности, можно использовать специальные сервисы для автоматического создания кода переадресации. Во всех из них принцип один: нужно вставить ссылки на старую и новую страницы и нажать “сгенерировать код”. Плюс, у некоторых из них есть какие-то ещё дополнительные возможности.

Вот несколько примеров таких сервисов:

  • .htaccess Generator. Можно сделать скрипт для перенаправления со ссылки без www на www (и наоборот), со страницы на страницу или с папки на папку. 

  • 301 Redirect Code Generator. Здесь можно выбрать язык программирования, на котором вам нужен код. Есть возможность сделать его на PHP, ASP, ASP.NET, HTML, JavaScript и на языке, который подойдёт для файла .htaccess. В сформированном скрипте будет приписка о том, что код сделан в этом сервисе. При копировании на ваш сайт всё это можно смело убрать.

  • Redirect Generator от Webworkshop. Здесь есть возможность создать код для разных видов редиректа: со страницы на страницу (доступно для .htaccess, HTML, JavaScript, PHP, ASP и ASP.NET), на www, с домена на домен или с одной папки (директории) на другую. Все варианты, кроме первого, доступны только для файла .htaccess.

  • Batch RewriteRule Generation. Он даёт возможность настраивать сразу несколько кодов переадресаций одновременно. Для этого достаточно через пробел или табуляцию ввести список нужных URL. Работает сервис только с кодом для файла .htaccess на Apache. 

  • Winginx. Поможет переделать код для .htaccess файла в код, подходящий для веб-сервера Nginx.

Корректная настройка редиректа

Проверка корректности настроек редиректа

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

  • Просто открыть ссылку в браузере. Если вас перенаправило по нужному адресу — всё работает. Но учтите, что перед тем, как это делать, важно почистить кэш. Иначе вам загрузится то, что браузер сохранил раньше, а не актуальная на текущий момент картина.

  • Также проверить работает ли 301 редирект сайта можно с помощью онлайн-инструментов вроде Header Checker Tool, testuri.org или bertal.ru. Если в коде ответа будет 301, а в графе “location” верное место назначения — значит вы всё настроили правильно. 

  • У Яндекс.Вебмастера и Google Search Console есть инструменты для проверки ответа сервера. Если код статуса HTTP 301, значит редирект работает корректно.

При этом нужно понимать, что поисковые роботы не сразу обнаружат, что вы сделали перенаправление на новый URL. Для этого им может понадобиться до 2-3 недель. Всё зависит от того, как часто они посещают ваш ресурс.

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

  • Например, с помощью программы Screaming Frog SEO Spider, Xenu’s Link Sleuth или другой подобной. Помимо ошибок в переадресациях, они покажут ещё много другой полезной информации.

  • Если вы работали с файлом .htaccess, есть сервисы, которые могут проверить правильно ли всё настроено, и если нет — показать ошибки. Примеры таких сервисов: htaccess checker и htaccess tester.

Популярные ошибки при работе с настройкой переадресации

Вот несколько ошибок, которые часто возникают:

  • Слишком большая цепочка редиректов. Лучше всего если переадресация сразу идёт со старого URL на новый, а не проходит длинным сложным путём. Иначе может возникнуть ошибка. То есть если вам нужно сделать переадресацию сразу на сайт с https и без www (а раньше было наоборот), можно использовать такой скрипт:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

  • Полное доверие сервису автоматической генерации редиректов. Автоматически сгенерированный код (в принципе, как и любой другой) всегда нужно тестировать.

  • Переадресация ведёт на нерабочую страницу. Если вы давно не проверяли актуальность своих редиректов, самое время этим заняться. Особенно если недавно вы как-то масштабно перекраивали структуру сайта или избавлялись от устаревших страниц. Плюс, такое может происходить из-за банальной опечатки в URL.

  • Перенаправление на неподходящую страницу. Такое происходит когда не до конца продуман сценарий переадресации. То есть человек ожидает увидеть один контент, а вы переводите его на кардинально другой. Например, он ждёт, что попадёт на товарную карточку, а происходит редирект на главную страницу. 

  • Неправильный выбор способа переадресации. Когда вместо постоянного перенаправления выбирают временное, или вместо 301 используют атрибут canonical (и наоборот).

  • Использовано сразу несколько инструментов. Если вы настроили переадресацию через .htaccess, то не нужно дополнительно работать ещё и с плагинами в CMS. Иначе это может привести к ошибкам и конфликтам.

  • Переадресация настраивается в том числе и для robots.txt. Если нужно полностью перенести сайт на другой домен, не переносите вместе в ним robots.txt. Иначе поисковые роботы могут запутаться, и склейка доменов будет происходить гораздо медленнее. 

Заключение

301 редирект

Давайте ещё раз повторим основные моменты, которые мы обсудили в этой статье:

  • 301 редирект применяют для постоянной переадресации пользователей с одной страницы на другую. Например, со всех страниц сайта на другой домен. Если вам нужно временно показать посетителям другой контент, воспользуйтесь другими способами (например, 302 или 307).

  • Если не можете определиться между 301 редиректом и атрибутом canonical, подумайте, хотите ли вы оставить страницу-донор доступной для пользователей? Если да — выбирайте canonical. 

  • При любых работах с сайтом не забывайте делать бэкап. Если что-то пойдёт не так, все изменения можно будет безболезненно откатить назад. 

  • Самый популярный способ настройки — через файл .htaccess. Но если ваш сайт сделан на CMS есть шанс не вникать в подробности написания кода и настроить всё с помощью плагинов.

  • Также простой код можно создать автоматически через специальные генераторы редиректов. Для более сложных переадресаций, конечно, понадобится помощь разработчика.

  • Чтобы проверить всё ли корректно работает, можно использовать Яндекс.Вебмастер, Google Search Console, онлайн-сервисы вроде Bertal или полноценную программу для SEO-анализа ресурса (например, Screaming Frog SEO Spider). 

  • Если всё работает — поздравляем. Один из важных аспектов технической оптимизации сайта прошёл успешно. 

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