Редиректы 301 и 302: в чем разница и как они влияют на SEO
Основы3 минРедакция Innovialabs
Коротко
301 сообщает поисковику, что страница переехала навсегда и в индексе нужно заменить старый адрес новым, а 302 — что переезд временный и старый URL стоит сохранить; для смены адресов почти всегда нужен 301.
Главная разница
Редирект — это ответ сервера, который отправляет браузер и робота с одного URL на другой.
- 301 Moved Permanently — страница переехала навсегда. Поисковик заменяет в индексе старый адрес новым и переносит на него сигналы.
- 302 Found — переезд временный. Поисковик обычно оставляет в индексе старый URL, потому что ожидает его возвращения.
Простое правило: если старый адрес больше не вернется, нужен 301. Если вернется — 302.
307 и 308: что это
Коды 307 и 308 появились, чтобы устранить неоднозначность с методами HTTP. Браузеры исторически могли превращать POST-запрос в GET при 301 и 302.
| Код | Тип | Метод запроса сохраняется |
|---|---|---|
| 301 | постоянный | не гарантируется |
| 302 | временный | не гарантируется |
| 307 | временный | да |
| 308 | постоянный | да |
Для SEO 308 работает как 301, а 307 — как 302. Для обычных страниц, которые открываются через GET, разница почти незаметна. 307/308 важны для API и форм.
Отдельно: браузер может показывать «307 Internal Redirect», когда для домена включен HSTS. Это внутреннее поведение браузера, а не ответ вашего сервера.
Когда какой редирект нужен
| Ситуация | Код |
|---|---|
| Переезд на новый домен | 301 |
| Переход с HTTP на HTTPS | 301 |
| Склейка www и без www | 301 |
| Изменение структуры URL, удаление старой страницы с аналогом | 301 |
| Временная акция или страница на техобслуживании | 302 |
| A/B-тест с разными URL | 302 |
| Перенаправление по языку или геолокации | 302, и лучше давать пользователю выбор |
| Перенаправление POST-запросов в API | 307 или 308 |
Если временный 302 существует месяцами, Google может со временем начать воспринимать его как постоянный. Но полагаться на это не стоит: сразу ставьте правильный код.
Meta refresh и JavaScript-редиректы
Перенаправление можно сделать и на стороне страницы:
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">
Мгновенный meta refresh Google обычно трактует как постоянный, а с задержкой — как временный. JavaScript-редирект робот увидит только после отрисовки страницы. Оба варианта — запасной путь, когда нет доступа к настройкам сервера. Серверный редирект всегда надежнее.
Цепочки и циклы
Цепочка — это когда A ведет на B, B на C, C на D. Каждый шаг замедляет загрузку, тратит ресурсы робота, а поисковики проходят ограниченное число переходов.
Цикл — A ведет на B, а B обратно на A. Страница не открывается вообще, браузер показывает ошибку.
Как избежать:
- Ведите старые URL сразу на конечный адрес, а не через промежуточные.
- После каждой миграции обновляйте старые правила, чтобы они не указывали на адреса, которые тоже стали редиректами.
- Меняйте внутренние ссылки на новые URL, а не полагайтесь на редиректы.
- Проверяйте цепочки краулером сайта или из командной строки:
curl -sIL http://example.com/old-page | grep -iE "^(HTTP|location)"
Пример настройки в nginx
Склейка HTTP и www в один адрес одним переходом:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
Частые ошибки
- Ставить 302 при переезде сайта «на всякий случай».
- Перенаправлять все удаленные страницы на главную. Поисковики могут считать это soft 404; лучше вести на близкий по смыслу раздел или отдавать 404/410.
- Тестировать 301 в браузере без очистки кэша: браузеры надолго запоминают постоянные редиректы.
- Забывать про sitemap.xml: в нем должны быть только конечные URL.