13 мин чтения Поисковая оптимизация (SEO)

301 редирект: когда он нужен и как настроить переадресацию без потери позиций

продвижение сайтов
Содержание11

301 редирект — ответ сервера «страница переехала навсегда»: браузер и поисковый робот уходят на новый адрес, а Яндекс и Google со временем показывают в выдаче его вместо старого. Ставьте 301, когда меняете адрес страницы, домен или протокол. Позиции переживают переезд, если каждая старая страница ведёт на свою новую, без цепочек, а правило живёт не меньше года.

Что такое 301 редирект и что он сообщает поиску

301 Moved Permanently — код ответа, которым сервер сообщает: у ресурса новый постоянный адрес, и все будущие ссылки должны вести туда. Так его определяет стандарт HTTP, RFC 9110. Вместе с кодом сервер отдаёт заголовок Location с новым адресом, браузер открывает его сам, и посетитель разницы не замечает.

Для поиска 301 — команда заменить адрес в индексе. Робот Яндекса старый документ не индексирует, а страницу, на которую ведёт перенаправление, проиндексирует, если она доступна. Google при постоянной переадресации показывает в выдаче конечную страницу, при временной — исходную.

Отсюда главное свойство редиректа: он переносит в выдаче адрес, а не текст. Если новая страница отвечает на тот же запрос, что и старая, она занимает её место. Если на новом адресе другое содержание, 301 позиций не спасёт: поисковик оценит страницу заново.

301 переносит в выдаче адрес, а не текст. Позиции сохраняются, только если новая страница отвечает на тот же запрос, что и старая.

Факт. Яндекс относит к постоянным перенаправлениям коды 301 и 308, к временным — 302, 303 и 307.

Когда нужен 301 редирект, а когда нет?

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

  • Сменился адрес страницы — переименовали раздел, убрали из URL расширение .php или дату, перенесли статью в другую рубрику.
  • Сайт переехал на новый домен — каждая старая страница ведёт на аналогичную новую.
  • Сайт перешёл на HTTPS — все адреса с http отдают 301 на ту же страницу с https, подробнее в разборе как установить SSL-сертификат и перейти на HTTPS.
  • Склейка зеркал — сайт открывается с www и без, со слэшем на конце и без: одну версию оставляете, остальные перенаправляете на неё.
  • Две страницы слили в одну — слабую перенаправляете на сильную, чтобы ссылки и закладки не вели в пустоту.

301 не нужен в двух случаях. Страница удалена, и замены у неё нет: отдавайте 404 или 410, так советуют и Яндекс, и Google, а редирект на главную только запутает посетителя — как правильно оформить такую страницу, разобрали в статье про ошибку 404 на сайте. Переадресация временная — акция, техработы, сезонный раздел: ставьте 302 или 307, тогда в выдаче останется исходный адрес.

301, 302, 307 или 308: какой код выбрать?

Для переезда навсегда подходят 301 и 308, для временного — 302 и 307. Разница внутри пар важна для форм: по стандарту браузер при 301 и 302 вправе превратить POST-запрос в GET, а при 308 и 307 метод запроса сохраняется.

Код Что сообщает Какой адрес в выдаче Когда ставить
301 Ресурс переехал навсегда Новый Смена адреса страницы, домена, протокола
308 Переехал навсегда, метод запроса не меняется Новый Постоянный перенос адреса, куда отправляют формы или запросы к API
302 Ресурс временно по другому адресу Старый Акция, техработы, временная заглушка
307 Временно, метод запроса не меняется Старый Временный перенос адреса, принимающего формы

Для обычных страниц сайта берите 301: его понимают все роботы, CMS и плагины. 308 нужен там, где через старый адрес отправляют формы или запросы к API, — иначе после редиректа данные формы могут потеряться.

Ещё одно свойство 301 важно при проверке: стандарт разрешает кешировать такой ответ. Браузер, который однажды получил 301, может перенаправлять дальше без запроса к серверу, даже когда правило уже исправили. Поэтому результат правки смотрите через curl или в окне инкогнито, а не в своём рабочем браузере.

Для обычных страниц выбирайте 301. Код 308 нужен, только если на старый адрес отправляют формы или запросы к API.

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

В nginx редирект задают директивой return в конфигурации сайта: она завершает обработку запроса и отдаёт клиенту указанный код. Файлы .htaccess nginx не читает, поэтому правила, написанные для Apache, на таком сервере молча не работают — старый адрес отвечает 404 или открывается как был.

Одна страница на новый адрес:

location = /old-page/ {
    return 301 /new-page/;
}

Весь старый домен на новый с сохранением пути:

server {
    listen 80;
    server_name old-site.ru www.old-site.ru;
    return 301 https://new-site.ru$request_uri;
}

Переменная $request_uri переносит путь вместе с параметрами, поэтому /catalog/?page=2 уедет на такой же адрес нового домена. Для HTTPS-версии старого домена нужен такой же блок с listen 443 ssl и действующим сертификатом: без него браузер покажет ошибку раньше, чем получит редирект.

Две ловушки. Если указать в return только адрес без кода, nginx отдаст временный 302. У директивы rewrite флаг permanent даёт 301, а флаг redirect — 302. После правки проверьте конфигурацию командой nginx -t и только потом перезагружайте сервер.

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

На Apache редирект пишут в конфигурации виртуального хоста или в файле .htaccess в корне сайта. Документация Apache советует основной конфиг: .htaccess сервер перечитывает при каждом запросе. На виртуальном хостинге доступа к конфигу обычно нет, и тогда .htaccess остаётся единственным вариантом.

Одна страница — директива Redirect из модуля mod_alias:

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

Весь домен с сохранением пути — модуль mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?old-site.ru$ [NC]
RewriteRule ^(.*)$ https://new-site.ru/$1 [R=301,L]

Здесь три тонкости. Redirect без кода статуса отдаёт временный 302, поэтому пишите 301 или permanent явно. Redirect срабатывает на все адреса, которые начинаются с указанного пути: правило для /old/ перенаправит и /old/page/. Для точного совпадения есть RedirectMatch с регулярным выражением. И порядок важен: из нескольких подходящих правил mod_alias срабатывает первое, поэтому частные редиректы ставьте выше общих.

Редирект через CMS и PHP: где подвох

Без доступа к конфигурации сервера редирект ставят средствами сайта: модулем CMS, плагином или кодом на PHP. Google считает серверную переадресацию самой надёжной, но и PHP отдаёт настоящий код 301 — робот получает тот же ответ. У многих платформ, как отмечает Google, есть собственные инструменты переадресации.

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

header('HTTP/1.1 301 Moved Permanently');
header('Location: https://site.ru/new-page/');
exit();

Главная ловушка CMS — код по умолчанию. В 1С-Битрикс функция LocalRedirect без третьего параметра отдаёт «302 Found», в WordPress функция wp_redirect по умолчанию тоже шлёт 302. Разработчик проверяет страницу в браузере, она открывается, задача закрыта, а поиск месяцами держит в выдаче старый адрес. Код передают явно: LocalRedirect($url, false, "301 Moved permanently") и wp_redirect($url, 301).

Так устроен и наш сайт: он работает на nginx, поэтому карта старых адресов с кодом 301 живёт в коде движка, а не в .htaccess.

Редирект средствами CMS работает, если код 301 передан явно. По умолчанию и Битрикс, и WordPress отдают временный 302.

Переезд на новый домен: порядок действий

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

  1. Добавьте оба сайта в Вебмастер и Search Console

    И подтвердите права на старый и новый домен.

  2. Составьте карту соответствия

    Таблицу «старый адрес -> новый» для каждой страницы, а не одно правило «всё на главную».

  3. Настройте постраничный 301

    Главная ведёт на главную, внутренние страницы на аналогичные. Если сменились и домен, и адреса разделов, Яндекс допускает двойной редирект: старый домен -> тот же путь на новом -> новый путь.

  4. Обновите внутренние ссылки и карту сайта

    На новом сайте не должно остаться ссылок на старые адреса. Атрибут rel="canonical" в коде нового сайта Яндекс называет одной из причин, по которым заявка на переезд не принимается.

  5. Подайте заявку в Вебмастере

    На старом сайте в разделе «Индексирование -> Переезд сайта» укажите новый адрес.

  6. Не снимайте редиректы

    Google советует держать их как можно дольше, минимум год.

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

Постраничная карта «старый адрес -> новый» решает исход переезда сильнее, чем выбор сервера или CMS.

Как проверить, что 301 редирект работает?

Проверка нужна сразу после настройки, до того как ошибку увидит поиск. Убедитесь в трёх вещах: старый адрес отдаёт именно 301, редирект ведёт сразу на конечную страницу, а конечная страница отвечает 200.

curl -sIL https://old-site.ru/old-page/

В ответе ищите строку с кодом 301 и заголовок Location с новым адресом. Ключ -L заставляет curl пройти всю цепочку и показывает каждый шаг. Без терминала подойдёт инструмент проверки ответа сервера в Яндекс Вебмастере — как устроен кабинет, разобрали в инструкции как добавить сайт в Яндекс Вебмастер.

Цепочки — главный враг. Googlebot проходит до 10 переходов, но Google советует вести сразу на конечный адрес, а если не выходит — держать в цепочке максимум четыре шага, лучше три или два. Цепочки вырастают сами: http -> https -> www -> новый путь. Каждое новое правило проверяйте вместе со старыми.

Правильный редирект — один шаг: старый адрес отдаёт 301, новый отвечает 200.

Частые ошибки с 301 редиректом

Позиции после переезда чаще теряют не из-за самого 301, а из-за того, как его настроили. Вот ошибки, которые встречаются снова и снова:

  • 01 Всё на главную

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

  • 02 Временный код вместо постоянного

    302 по умолчанию отдают Redirect в Apache без статуса, return в nginx с одним адресом, LocalRedirect в Битриксе и wp_redirect в WordPress.

  • 03 Цепочки из правил разных лет

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

  • 04 Старые адреса во внутренних ссылках

    Каждый клик проходит через редирект; Google советует заменить такие ссылки на новые.

  • 05 Редиректы сняли раньше срока

    Внешние ссылки и закладки снова ведут в 404, а сигналы старых адресов теряются.

  • 06 301 на страницу без замены

    Если аналога нет, честнее отдать 404 или 410.

С чего начать, если адреса уже меняли

Если сайт уже переезжал или менял структуру, начните с проверки того, что уже настроено. Выгрузите из Вебмастера и Search Console адреса, по которым приходят посетители и ведут внешние ссылки, и прогоните их через curl или краулер. Каждый должен отдавать 301 сразу на живую страницу с ответом 200. Всё, что отвечает 404, 302 или ведёт по цепочке, и есть список работ.

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

Мнение. Если у сайта несколько десятков страниц и есть доступ к серверу, настраивайте 301 в конфигурации nginx или Apache — это надёжнее модуля CMS. Если страниц тысячи и адреса меняются по шаблону, пишите правила с регулярными выражениями и до запуска проверяйте их выборкой реальных адресов.

Не хотите разбираться с картой редиректов сами — закажите SEO-аудит сайта: проверим ответы сервера, цепочки и старые адреса, которые ещё приносят трафик.

Источники

Частые вопросы

Передаёт ли 301 редирект ссылочный вес?

Да. Google пишет, что 301 и другие постоянные переадресации не ухудшают оценку в системе PageRank. Яндекс при переезде на новый домен учитывает внешние ссылки старого сайта как внешние ссылки нового.

Можно ли сделать 301 редирект без доступа к серверу?

Настоящий 301 отдаёт только код: конфигурация сервера, .htaccess, модуль CMS или PHP. Метатег refresh поисковики читают по-разному: Google считает мгновенный refresh постоянной переадресацией, а Яндекс при небольших задержках — временной. Поэтому refresh годится только как запасной вариант, когда 301 поставить нельзя.

Чем 301 редирект отличается от canonical?

301 уводит и посетителя, и робота: старая страница больше не открывается. Атрибут rel="canonical" оставляет обе страницы доступными и только подсказывает поиску, какую показывать в выдаче. Старая страница людям больше не нужна — ставьте 301; обе версии должны открываться, например сортировки каталога, — canonical.

Поделиться
ВКонтакте Telegram MAX

Расскажите о задаче — посчитаем смету

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