301 vs 302 редирект: разница и когда что использовать
301 и 302 — два самых распространённых HTTP-редиректа, и их путают даже опытные разработчики. Неправильный выбор стоит SEO-позиций, ломает аналитику и создаёт циклы редиректов. В этой статье разберём принципиальную разницу, влияние на SEO, когда применять каждый, и покажем примеры настройки в nginx, Apache, PHP и WordPress.
Что такое 301 Moved Permanently
По RFC 9110 §15.4.2, код 301 говорит: «ресурс переехал навсегда, используйте новый URL во всех будущих запросах». Поисковые системы передают ~90-99% SEO-веса со старого URL на новый. Браузер кэширует редирект.
Что такое 302 Found
Код 302 (RFC 9110 §15.4.3) означает: «ресурс временно доступен по другому URL, но оригинальный остаётся актуальным». SEO-вес НЕ передаётся — старый URL продолжает индексироваться. Браузер не кэширует.
Ключевые отличия в таблице
| Параметр | 301 | 302 |
|---|---|---|
| Семантика | Навсегда | Временно |
| SEO-вес | Передаётся | Не передаётся |
| Кэширование браузером | Да (агрессивное) | Нет |
| Индексация | Новый URL | Старый URL |
| Метод запроса | Может измениться на GET | Может измениться на GET |
Когда использовать 301
- Переезд домена (example.com → example.io)
- Изменение URL-структуры (например, переход на ЧПУ)
- HTTP → SSL/TLS проверку
- www → без www (или наоборот)
- Удаление устаревшей страницы с переадресацией на replacement
- Изменение slug статьи в блоге
Когда использовать 302
- A/B тестирование — временно отправляем часть трафика на другую страницу
- Maintenance mode — перенаправляем на заглушку
- Географический роутинг (реальный edge случай — чаще 307)
- Временные акции — после окончания возвращаемся на канон
- Авторизация — после логина redirect на originally-requested страницу
Настройка в nginx
# 301 permanent redirect
location = /old-page {
return 301 https://example.com/new-page;
}
# 302 temporary redirect
location = /promo {
return 302 https://example.com/black-friday;
}
# HTTP → HTTPS (всегда 301)
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}Настройка в Apache (.htaccess)
# 301
Redirect 301 /old-page /new-page
# 302
Redirect 302 /promo /black-friday
# HTTP → HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]Настройка в PHP
<?php
// 301
header('Location: https://example.com/new-page', true, 301);
exit;
// 302 (default, но лучше указывать явно)
header('Location: https://example.com/temp-page', true, 302);
exit;Настройка в WordPress
Используйте плагины Redirection или Rank Math, либо в коде:
add_action('template_redirect', function () {
if (is_page('old-page')) {
wp_redirect(home_url('/new-page'), 301);
exit;
}
});SEO-риски при неправильном выборе
- 302 вместо 301 при переезде → Google не передаёт SEO-вес, новый URL не ранжируется.
- 301 для A/B теста → браузеры кэшируют, вы не сможете откатить быстро.
- Цепочки редиректов → 301 → 301 → 301 теряет до 15% веса и замедляет загрузку.
- Редирект с разных протоколов — следите за HTTPS-цепочкой.
Проверяйте цепочку редиректов через HTTP Header Checker от Enterno.io — он покажет все шаги от исходного URL до финального, с кодами и временем каждого хопа.
303, 307, 308 — когда нужны
- 303 See Other — после POST перенаправить на GET (POST-Redirect-Get pattern)
- 307 Temporary Redirect — как 302, но метод и тело ЗАПРОСА сохраняются
- 308 Permanent Redirect — как 301, но метод и тело сохраняются
Часто задаваемые вопросы (FAQ)
В: Передаётся ли полный SEO-вес через 301?
О: Google официально заявляет: «редиректы 301 передают PageRank полностью». На практике наблюдается 90-99%.
В: Сколько редиректов подряд допустимо?
О: Максимум 1 хоп. Каждый дополнительный редирект = минус SEO и +100-200ms latency.
В: Как проверить, какой код возвращает редирект?
О: curl -I https://example.com или используйте Enterno.io HTTP Checker — покажет полную цепочку.
В: Можно ли использовать 302 постоянно?
О: Можно, но это ошибка. Google может воспринять долгий 302 как 301, но поведение непредсказуемое.
Заключение
Правило простое: 301 для постоянных изменений, 302 для временных. 99% редиректов на production-сайте должны быть 301. Проверяйте цепочки через HTTP Header Checker и избегайте множественных хопов.
Проверьте ваш сайт прямо сейчас
Проверить →