301 или 302 редирект: когда какой использовать
301-редирект передаёт пользователя и поискового робота на другой URL навсегда — это основной инструмент при смене адресов. 302-редирект работает временно: пользователь попадает на новую страницу, но старая остаётся главной в индексе. Выбрать неправильный код — значит либо потерять позиции при миграции, либо неделями видеть в выдаче неактуальный URL.
В гайде разбираем разницу между 301, 302, 307 и 308, когда применяется каждый, как настроить в .htaccess, nginx, WordPress и Node.js. Отдельный раздел — почему цепочки редиректов вредят SEO и как их найти на сайте за 5 секунд.
Что такое HTTP-редирект
HTTP-редирект — это ответ сервера со статусом 3xx и заголовком Location, который указывает браузеру перейти на другой URL. Пользователь нажимает ссылку на example.com/old, сервер отвечает:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new
Браузер автоматически делает запрос на /new. Для пользователя всё происходит незаметно — только меняется адрес в адресной строке.
Редиректы решают три типичные задачи: перенос сайта на новый домен, смена структуры URL (из /product?id=42 в /products/nike-air-max), объединение дублей (www и без www, HTTP и HTTPS). Ошибки в настройке приводят к потере позиций — все ссылки, которые копились годами, могут перестать работать.
301 Moved Permanently: постоянный редирект
301-редирект сообщает: страница переехала навсегда. Поисковые системы обновляют индекс, старый URL выпадает, новый занимает его место. Браузеры кешируют 301-редирект — следующий раз пользователь сразу пойдёт на новый URL без обращения к старому.
В 2016 году Google подтвердил: 301-редирект передаёт практически 100% ссылочного веса (PageRank). До этого в индустрии был миф, что 301 «теряет 15% веса» — это неверно, и сейчас уже точно неактуально. Яндекс ведёт себя аналогично — вес передаётся полностью.
Типичное использование: миграция сайта, смена URL страницы, объединение дублей. Для любой постоянной смены адреса — только 301.
302 Found: временный редирект
302-редирект — временное перенаправление. Поисковик не заменяет старый URL новым, а продолжает держать в индексе исходный. Браузеры не кешируют 302 так агрессивно, как 301.
Парадокс: технически 302 не передаёт ссылочный вес сразу. Но если 302-редирект висит месяцами и не меняется, Google в какой-то момент начинает трактовать его как 301 самостоятельно — из здравого смысла. То есть 302 на постоянную смену — это отложенный 301 с потерей нескольких месяцев.
Главное правило: 302 используется, когда исходная страница должна остаться в индексе.
301 vs 302: главные отличия
Сводная таблица по каждому параметру.
| Параметр | 301 Moved Permanently | 302 Found |
|---|---|---|
| Тип | Постоянный | Временный |
| Ссылочный вес | Передаётся сразу, почти 100% | Не передаётся сразу, Google может начать передавать через месяцы |
| Индекс Google | Старый URL выпадает, новый занимает | Старый URL остаётся в индексе |
| Индекс Яндекса | Аналогично Google | Аналогично Google |
| Кеширование браузером | Агрессивное, надолго | Слабое, на одну сессию |
| Когда использовать | Смена URL навсегда | Временная замена, A/B-тест, техработы |
Практическая сторона: ошибка с 302 вместо 301 при смене URL — это 2–6 месяцев потерянного трафика, пока Google сам не догадается передать вес. Ошибка с 301 вместо 302 — сложно исправляется, потому что 301 закеширован у пользователей и сидит в индексе.
Когда использовать 301
Шесть типичных сценариев:
- Переезд на новый домен.
oldbrand.ru→newbrand.ru. Настройте 301 с каждой страницы старого домена на соответствующую страницу нового. - Смена URL страницы. Было
/product?id=42, стало/products/nike-air-max. 301 со старого URL. - HTTP → HTTPS. После установки SSL-сертификата — 301 с
http://наhttps://. Без этого у вас дубли. - Слеш в конце URL.
/about/и/about— это разные URL для поисковика. Выберите канонический вариант и 301-редиректьте второй. - Объединение www и без www.
www.example.comиexample.com— два разных хоста. Один 301-редиректом на другой. - Удалённая страница объединяется с похожей. Закрыли рубрику
/obzory/, вместо неё открыли/stati/— 301 со страниц старой рубрики на страницы новой.
Во всех шести случаях 302 приведёт к дублям, конфликтам в индексе и потере трафика. Подробнее о дублях и canonical — в статье «Мета-теги для SEO».
Когда использовать 302
Три корректных сценария:
- A/B-тестирование. Редиректите часть трафика на версию B, чтобы Google индексировал основную версию A. После теста — 302 убирается.
- Технические работы.
/shop/временно недоступен, редиректите на/или на страницу с сообщением. После восстановления — убираете. - Геоиндикация или язык. Пользователь из Франции заходит на
example.com, сервер 302-редиректит наexample.com/fr/. При этом в индексе остаются обе версии — с правильно настроеннымиhreflang, конечно. Подробнее — в инструменте проверка hreflang.
Во всех других случаях 302 — это баг, а не фича.
307 и 308: современные альтернативы
Помимо 301/302 есть ещё два редирект-кода, и они важны для API и форм.
| Код | Семантика | HTTP-метод |
|---|---|---|
| 301 Moved Permanently | Постоянный | Может измениться (POST → GET) |
| 302 Found | Временный | Может измениться (POST → GET) |
| 307 Temporary Redirect | Временный | Сохраняется (POST → POST) |
| 308 Permanent Redirect | Постоянный | Сохраняется (POST → POST) |
Разница с 301/302 в одном пункте: 307 и 308 гарантируют сохранение HTTP-метода при редиректе. Если пользователь отправил форму через POST, 307 передаст её на новый URL тоже POST'ом. 302 может превратить POST в GET — тогда форма потеряется.
Для обычных GET-переходов (клик по ссылке) разницы нет — 301 и 308 ведут себя одинаково, как и 302/307. Для API и форм — только 307/308. Для SEO — 301 и 308 эквивалентны.
Как настроить редирект
Синтаксис зависит от стека. Ниже — примеры для четырёх популярных платформ.
Apache (.htaccess)
Файл .htaccess лежит в корне сайта или в подкаталоге. Простой 301:
Redirect 301 /old-page https://example.com/new-page
Редирект всего старого домена на новый с сохранением пути:
RewriteEngine On
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
HTTP → HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
nginx
В блоке server:
# Простой 301
location = /old-page {
return 301 /new-page;
}
# С поддержкой путей
location /obzory/ {
rewrite ^/obzory/(.*)$ /stati/$1 permanent;
}
# HTTP → HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
permanent = 301. Для 302 — redirect. Для 307/308 — используется return с явным кодом: return 307 /new;.
WordPress
Самый простой способ — плагин Redirection. Ставится, открываете раздел в админке, добавляете пары «Source URL → Target URL», выбираете тип (301/302). Работает через PHP на уровне приложения, без правки файлов сервера.
Программно:
wp_redirect('/new-page', 301);
exit;
Node.js / Express
app.get('/old-page', (req, res) => {
res.redirect(301, '/new-page');
});
Для 307: res.redirect(307, '/new-page'). По умолчанию Express использует 302 — обычно это не то, что нужно для SEO, всегда указывайте код явно.
Цепочки редиректов: почему это плохо
Цепочка — когда A редиректит на B, а B редиректит на C. Google и Яндекс обходят цепочки, но каждый лишний шаг — это:
- Потеря crawl budget (лишний запрос к серверу)
- Замедление загрузки (каждый редирект — это HTTP round-trip)
- Потенциальная потеря веса на каждом шаге (незначительная, но накапливается)
- Риск обрыва: Google обрабатывает до 10 редиректов в цепочке, Яндекс меньше. Если их больше — страница не индексируется.
Правило: максимум один редирект. Если у вас миграция с трёх доменов подряд и на каждом висит 301 — объедините всё в прямой редирект на финальный URL.
Найти цепочки вручную невозможно, если на сайте больше 100 URL. Проверка редиректов в SEO Crawler строит карту редиректов по сайту, подсвечивает цепочки, циклы и смешение 301/302. Подробнее о смежных проблемах — в статье «Как найти битые ссылки на сайте».
Часто задаваемые вопросы
301 передаёт ссылочный вес?
Да, практически полностью. Google официально подтвердил в 2016 году, что 301-редирект передаёт PageRank без потерь. Яндекс ведёт себя аналогично. Старый миф про «потерю 15%» — неактуален.
302 теряет ссылочный вес?
Технически — да, вес сразу не передаётся. Но если 302 висит месяцами, Google в какой-то момент начинает трактовать его как 301 самостоятельно. Для постоянной смены URL всегда используйте 301.
Canonical или 301?
Зависит от ситуации. 301 физически перенаправляет пользователя — старая страница становится недоступна. canonical — подсказка поисковику, какую версию считать основной, обе страницы остаются рабочими. Смена URL с удалением старого — 301. Дубли контента на живых страницах (товар в двух категориях) — canonical.
Цепочки редиректов вредят SEO?
Да. Google проходит до 10 редиректов в цепочке, Яндекс — меньше. Каждый шаг — это потеря времени и crawl budget. Максимум, к которому нужно стремиться, — один редирект с исходного URL на финальный.
Редирект с HTTP на HTTPS — 301 или 302?
Только 301. HTTPS-версия — постоянная. 302 в этом случае приведёт к тому, что Google будет индексировать HTTP-версию как основную, а HTTPS — как временную альтернативу, что противоречит смыслу.
В чём разница между 302 и 307?
307 Temporary Redirect гарантирует сохранение HTTP-метода: POST остаётся POST, PUT остаётся PUT. Исторически 302 мог менять метод на GET — это ломает отправку форм и API-запросов. Для API и форм используйте 307, для обычных ссылок — можно оба, но 307 семантически корректнее.