301-редиректы и SEO: как не потерять вес
Что такое 301-редирект и почему SEO держится на нём
301-редирект — это ответ сервера, который сообщает: «запрошенный адрес переехал навсегда, вот новый». Для поисковой системы это указание перенести все сигналы — ссылочный вес, историю показов, релевантность — с одного URL на другой.
Связка «301 редирект seo» становится критичной в четырёх ситуациях:
- смена домена или переход с http на https;
- слияние
wwwи без-www, смена структуры URL; - удаление и объединение разделов;
- переезд на новый CMS-движок с другими адресами.
В каждом из этих случаев вы либо аккуратно передаёте накопленный вес, либо теряете его. Причём потеря — не мгновенная и не всегда заметная: это медленное проседание позиций в течение 2–6 недель, которое сложно связать с событием, случившимся месяц назад.
Разберём, как именно передаётся вес, чем 301 отличается от 302 и 307, почему цепочки редиректов съедают весь эффект и как проверить свою конфигурацию командой curl.
Как редирект передаёт вес: механика
Когда поисковый робот встречает 301, он видит перенаправление и обрабатывает его так:
- Запоминает пару «старый URL → новый URL» как постоянную замену.
- Пересчитывает ссылки. Внутренние и внешние ссылки, ведущие на старый адрес, начинают учитываться в пользу нового. Полностью или с небольшими поправками — зависит от того, насколько уверенно поисковик определил постоянство редиректа и нет ли противоречий.
- Переносит историю. Накопленные сигналы страницы — не «копия», а именно перенос: старый URL постепенно перестаёт показываться, новый занимает его место.
- Заменяет URL в индексе. Если редирект корректен и постоянен, старый адрес выпадает из выдачи, новый появляется.
Что при этом не переносится автоматически и требует ручной работы:
- оценки в выдаче, привязанные к брендовым запросам старого домена;
- внешние ссылки, которые вы можете обновить сами (и стоит обновить — это ускоряет процесс);
- разметка Schema.org и метаданные — их нужно корректно перенести на новые страницы;
- позиции страниц, у которых не нашлось однозначной новой версии.
Ключевое практическое следствие: редирект нужно делать в один шаг до финального URL. Поисковый робот обрабатывает цепочку, но обрабатывает хуже, и часть веса теряется на каждом лишнем переходе.
| Что переносится | 301 (постоянный) | 302/307 (временный) |
|---|---|---|
| Ссылочный вес | Да, переносится | Нет, считается, что старая страница вернётся |
| Замена URL в индексе | Да | Нет |
| История показов | Да | Нет |
| Скорость применения | От дней до недель | Не применяется |
301, 302, 307, 308: в чём разница и что выбрать
Разница — в семантике и в том, как браузер обращается с методом запроса.
| Код | Смысл | Метод запроса | Влияние на SEO |
|---|---|---|---|
| 301 | Перемещено навсегда | Может меняться на GET | Передаёт вес, заменяет URL |
| 302 | Перемещено временно | Может меняться на GET | Вес остаётся на старом URL |
| 307 | Временный редирект | Сохраняется (POST остаётся POST) | Вес остаётся на старом URL |
| 308 | Постоянный редирект | Сохраняется | Передаёт вес, заменяет URL |
Практические правила:
- Переезд, смена домена, http → https, склейка www — всегда 301 (или 308, если важна корректность методов для API).
- A/B-тест, страница в разработке, временная акция — 302 или 307. Не используйте 301 «на время»: поисковик запомнит замену, и когда вы вернёте старую версию, восстановление позиций займёт месяцы.
- REST API и формы — 307/308, чтобы метод и тело запроса не терялись при перенаправлении.
Частая ошибка: настроить 302 при переезде на HTTPS и не понимать, почему через полгода в индексе всё ещё обе версии. Технически сайт работает, но вес остаётся на http-адресах, которые не предназначены для показа.
Цепочки редиректов: как теряется вес
Цепочка (redirect chain) — это когда адрес перенаправляется не сразу на финальную страницу, а через один или несколько промежуточных. Например:
http://www.example.com/page →301→ https://www.example.com/page →301→ https://example.com/page
Тут три адреса и два перехода. Что происходит с точки зрения SEO:
- Потеря скорости. Каждый хоп — отдельный раундтрип туда-обратно. На мобильной сети 50–100 мс на переход складываются в заметную задержку, а скорость входит в Core Web Vitals.
- Потеря краулингового бюджета. Робот тратит время на обход редиректов вместо страниц. На сайте из 10 000 URL это ощутимо.
- Размывание сигналов. Часть внешних ссылок ведёт на первый адрес в цепочке, часть на второй, часть на финальный. Вес приходит разными путями и хуже консолидируется.
- Риск обрыва. Если в середине цепочки адрес отвечает 404 или 500, вся передача веса прекращается. Один битый хоп — и весь редирект перестаёт работать.
Целевое состояние — ровно один хоп до финального URL. Не «цепочка из правил веб-сервера, которая в итоге приводит куда надо», а одно правило, которое сразу отдаёт 301 на канонический адрес.

Циклы, петли и редирект на самого себя
Отдельный класс проблем — редиректы, которые никуда не ведут.
- Цикл (loop). A → B → A. Браузер показывает
ERR_TOO_MANY_REDIRECTS, страница недоступна полностью. - Редирект на самого себя.
https://example.com/x→https://example.com/x. Браузер обычно справляется, но робот видит противоречивый сигнал: адрес как бы и перемещён, и уже находится на месте. - Редирект на несуществующую страницу. 301 ведёт на URL, который отдаёт 404. Вес не передаётся, потому что передавать некуда.
Циклы почти всегда рождаются при наложении нескольких слоёв конфигурации: правила nginx плюс правила CMS плюс настройки CDN, каждая из которых считает, что знает правильный протокол и правильный хост.
Проверить конкретный URL на цикл можно так:
curl -sS -o /dev/null -w '%{num_redirects}\n' -L --max-redirs 10 https://example.com/page
-o /dev/null— тело ответа не нужно, анализируем только заголовки и метаданные.-w '%{num_redirects}'— выводит количество фактически выполненных переходов.--max-redirs 10— ограничивает цепочку: если после десяти переходов результата нет,curlсообщитMaximum (10) redirects followed, и это симптом петли.
Норма — 1. Значения 0 (редиректов нет вообще, хотя должны быть) и 2+ (цепочка) требуют разбора конфигурации.
Как проверить редиректы: три команды
1. Заголовки ответа без следования
curl -sSI http://example.com/page
-I— запрос методом HEAD, сервер отдаёт только заголовки.-s— тихий режим без прогресс-бара.
Ожидаемый вывод:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 15 Sep 2026 10:12:00 GMT
Location: https://example.com/page
Здесь важна вторая строка — код ответа, и строка Location — куда именно ведёт редирект. Если Location указывает на промежуточный адрес, а не на финальный, у вас цепочка. Если код 302 вместо 301 — сигнал о временности, вес не переносится.
2. Полная цепочка переходов
curl -sS -o /dev/null -w '%{http_code} %{num_redirects} %{url_effective}\n' -L http://www.example.com/page
-L—curlсам следует всем редиректам.%{http_code}— итоговый код последнего ответа (ожидается200).%{num_redirects}— сколько переходов было.%{url_effective}— финальный URL, на котором остановился обход.
Формат ответа 200 1 https://example.com/page — идеальный: один переход, финальная страница отдаёт 200. 200 3 https://example.com/page означает, что до правильного адреса вы добрались, но через три хопа. 404 2 https://example.com/page — двойная проблема: и цепочка, и финальная 404.
3. Массовая проверка через карту сайта
Когда редиректов сотни, проверять по одному бессмысленно. Выгрузите список URL из старой карты сайта и прогоните их циклом:
while read -r url; do
printf '%s -> ' "$url"
curl -sS -o /dev/null -w '%{http_code} %{num_redirects} %{url_effective}\n' \
-L --max-redirs 5 "$url"
done < old-urls.txt
while read -r url— построчное чтение файлаold-urls.txt.printf '%s -> '— печатает исходный адрес перед результатом.- Остальное — та же схема с
curl.
Результат — таблица вида «старый URL → код, число хопов, финальный адрес». Дальше отбираете строки, где код не 200 или хопов больше одного, и чините именно их. Такой же массовый прогон делает https://uptimechecker.ru/redirect-check — удобно, когда нужно быстро увидеть цепочку глазами и зафиксировать её до и после правок.

Таблица: симптом → причина → решение
| Симптом | Причина | Решение |
|---|---|---|
ERR_TOO_MANY_REDIRECTS в браузере |
Цикл из-за конфликта правил nginx, CMS и CDN | Оставить один слой, отвечающий за редиректы |
| В выдаче обе версии, http и https | Настроен 302 или редирект отсутствует | Заменить на 301, добавить canonical |
| Старый URL в индексе спустя месяцы | Цепочка редиректов или редирект на 404 | Свернуть до одного хопа, проверить финальный код |
| Позиции просели после переезда | Часть ссылок ведёт на битые промежуточные адреса | Массовая проверка curl, починка каждого URL |
| Редирект работает, вес не передаётся | Страница отдаёт 302 или meta refresh вместо 301 |
Настроить HTTP-редирект на уровне сервера |
| Редирект на самого себя | Правило срабатывает и для финального адреса | Добавить условие исключения в конфигурацию |
| Трафик упал только на части страниц | У редиректа не было однозначного аналога, все ушли на главную | Сделать постраничные редиректы на близкие по смыслу URL |
| Робот не обходит новые URL | sitemap.xml не обновлён, robots.txt блокирует |
Обновить карту сайта, проверить директивы |
| Редиректы ломаются периодически | Кеш CDN отдаёт старые правила | Сбросить кеш, согласовать порядок слоёв |
meta refresh и JavaScript-редиректы: почему это плохо
Многие CMS умеют делать редирект так:
<meta http-equiv="refresh" content="0; url=https://example.com/new">
или через JavaScript:
window.location.replace('https://example.com/new');
Для SEO это худший вариант:
<meta refresh>обрабатывается медленнее и заметно хуже, чем HTTP-301: поисковик может не применить замену URL вообще.- JavaScript-редирект зависит от того, выполняет ли робот скрипты, и насколько быстро. Внешние ссылки на такой адрес почти не передают вес.
- Пользователь видит вспышку пустой страницы до перехода.
HTTP-редирект на уровне веб-сервера всегда предпочтительнее: он работает до отдачи тела ответа, мгновенен и однозначно трактуется и браузером, и роботом.
Проверить, не отдаёт ли страница «редирект» без HTTP-кода, можно так:
curl -sSI https://example.com/old-page | grep -iE '^HTTP|^location'
curl -sSL https://example.com/old-page | grep -i 'http-equiv="refresh"'
Первая команда покажет HTTP-статус и заголовок Location, если он есть. Вторая — поищет мета-редирект в теле. Если статус 200, а мета-тег найден, значит редирект реализован неправильно: для робота страница живая и никакой замены URL не происходит.
План безопасного переезда на 301-редиректах
Если предстоит смена адресов, порядок действий снижает риск потери веса:
- Составьте карту соответствия. Для каждого старого URL определите новый. Правило «всё на главную» — крайняя мера, поисковики воспринимают её как мягкую 404 и не переносят вес.
- Сделайте редиректы на уровне сервера, до логики CMS. В nginx это блок
serverдля старого домена с одной директивойreturn 301 https://new.example.com$request_uri;. - Исключите перекрёстные срабатывания. Правило для старого домена не должно применяться к новому — иначе получите цикл.
- Проверьте цепочки. Массовый прогон старых URL должен показать
200и1хоп в каждой строке. - Обновите
sitemap.xml,canonical, внутреннюю перелинковку на новые адреса. - Обновите внешние ссылки, которые контролируете. Это ускоряет передачу сигналов.
- Держите редиректы минимум год — обычно больше. Удаление 301 через месяц после переезда означает потерю всего, что ещё не успело перенестись.
- Добавьте новые адреса в мониторинг сразу после переезда: ошибка в конфигурации редиректов обнаруживается не сразу, а по падению трафика.
Отдельно следите за связкой редиректов и HTTPS. Если вы одновременно меняете домен и протокол, делайте это одним шагом: http://old.example.com/page → https://new.example.com/page, а не через промежуточный https://old.example.com/page. Разбор типичных ошибок при переходе на защищённый протокол — в статье «SSL-сертификат и SEO: как HTTPS влияет на ранжирование».
Смежные проверки, которые ловят последствия плохих редиректов
Редиректы редко ломаются в одиночку — обычно это часть более крупной конфигурационной ошибки. Полезно проверять их вместе с окружением:
- Доступность — финальный URL должен отдавать 200 стабильно, а не только в момент проверки. Проверяйте на https://uptimechecker.ru/check.
- DNS — если новый домен ещё не резолвится на всех резолверах, редирект будет работать нестабильно. Проверка записей: https://uptimechecker.ru/dns-check.
- 404 и мягкие 404 — редирект, ведущий на страницу с кодом 200 и текстом «страница не найдена», не переносит вес. Как это исправлять — в статье «Ошибка 404 Not Found: причины и что делать».
- Карта сайта и robots.txt — должны содержать только актуальные адреса.
Инфраструктурный мониторинг вроде Zabbix такие вещи не показывает: он следит за состоянием серверов и сервисов изнутри, а не за тем, что видит поисковый робот и внешний посетитель. Это разные задачи, и они хорошо дополняют друг друга: внутренний мониторинг отвечает на вопрос «работает ли сервис», внешняя проверка — «доходит ли до пользователя то, что должно доходить».
Проверьте свои редиректы
Начните с одного запроса на https://uptimechecker.ru/redirect-check: сервис покажет всю цепочку переходов, промежуточные адреса и финальный ответ — то, что поисковый робот видит при обходе вашего сайта. Если цепочка длиннее одного хопа или финальный адрес не отдаёт 200, стоит поправить конфигурацию до того, как это заметит поисковик.