301, 302, 307, 308 — в чём разница и какой редирект когда нужен
Коротко, для тех, кто не дочитает: 301 и 308 — постоянные, 302 и 307 — временные, а 307 и 308 ещё и не дают браузеру превратить POST в GET. На переезд навсегда ставь 301, на форму с телом — 307 или 308, и не гоняй посетителя по цепочке из трёх прыжков. Дальше — почему это вообще кого-то волнует и где на этом теряют трафик годами.
На днях открыл отчёт по сайту, который давно переехал на новый домен, и заметил странную вещь: старый адрес до сих пор висит в выдаче, собирает клики и отдаёт их в никуда, а новый за всё это время так и не набрал позиций. Полез в заголовки ответа — и, конечно, там стоял 302, «временный», который кто-то поставил на неделю технических работ и благополучно забыл.
Редирект — это, по сути, ответ сервера в духе «страница теперь по другому адресу», и кодов у такого ответа несколько. Выбор между ними влияет сразу на две вещи: как поисковик перенесёт накопленный вес и как поведёт себя отправка формы или запрос к API.

Почему путаница такая живучая? Потому что в обычной жизни разница не видна вовсе: браузер переходит куда надо при любом коде, человек ничего не замечает. Расхождение всплывает через месяцы, когда старый адрес всё ещё висит в выдаче, а новый никак не наберёт позиций.
Таблица: чем отличаются
| Код | Тип | Метод запроса | Когда использовать |
|---|---|---|---|
| 301 Moved Permanently | Постоянный | Может смениться (POST→GET) | Страница переехала навсегда — основной SEO-редирект |
| 302 Found | Временный | Может смениться (POST→GET) | Временно: A/B-тест, акция, тех. работы |
| 307 Temporary Redirect | Временный | Сохраняется (POST остаётся POST) | Временный переезд, где нельзя терять метод и тело запроса |
| 308 Permanent Redirect | Постоянный | Сохраняется | Постоянный переезд с сохранением метода, например у API |
Ось первая: постоянный или временный
Коды 301 и 308 — постоянные, и они говорят поисковику простую вещь: переноси сигналы на новый адрес, потому что старый больше не нужен. Со временем прежний URL выпадает из индекса, а его место занимает новый, вместе со ссылочным весом и накопленной историей.
Коды 302 и 307 — временные, и поисковик оставляет в индексе исходный адрес, потому что ты сам сказал ему, что это ненадолго. Для настоящего переезда это ошибка: склейка сигналов откладывается на неопределённый срок, а старый URL продолжает висеть в выдаче и собирать клики на пустоту.
Как долго живёт «временный» редирект в реальной жизни? Обычно дольше, чем планировалось, — намного дольше! Поставили на неделю технических работ, забыли, вспомнили через полгода — и всё это время новая страница не получала ничего.
Ось вторая: метод запроса
Старые коды 301 и 302 исторически разрешают клиенту сменить метод, поэтому браузер после такого редиректа обычно превращает POST в GET и теряет тело запроса по дороге. Для обычных страниц это никого не волнует, потому что их и так открывают через GET.
Коды 307 и 308 ведут себя строго: метод и тело запроса сохраняются, POST остаётся POST, и это критично в трёх случаях:
- отправка формы через
POST; - эндпоинт API, принимающий
POSTилиPUT; - любой запрос с телом, которое нельзя уронить при смене на
GET.
Если промахнуться здесь, симптом будет довольно странным: форма отправляется, ответ приходит, а данных на сервере нет! Искать причину в редиректе обычно догадываются в последнюю очередь.
Какой редирект для какой задачи
| Задача | Код | Почему |
|---|---|---|
| Страница переехала навсегда, сменился URL | 301 | Постоянный → склеивает сигналы на новый адрес, старый выпадает из индекса |
Смена домена, http→https, склейка www и дублей | 301 | Тот же механизм консолидации; собирай в один переход до финального URL |
| Удалён товар или истекла акция | 301 на релевантную категорию | Передаёт вес и не плодит 404 — но не на главную, это «мягкая 404» |
| Тех. работы, «скоро вернёмся», сезонная страница | 302 | Временно → поисковик сохраняет исходный URL в индексе |
| A/B-тест, временный показ контента с другого URL | 302 | Не хотим, чтобы движок заменил оригинал тестовым адресом |
Партнёрская ссылка через трекер /go/… | 302 или 307 | Оффер временный и ротируется, трекер-URL не нужно индексировать |
Временно перенаправить отправку формы (POST) | 307 | Сохраняет метод и тело запроса — POST остаётся POST |
| API-эндпоинт переехал навсегда | 308 | Постоянный плюс сохранение метода: POST и PUT не превратятся в GET |
canonical или редирект
Разница здесь принципиальная. Редирект 301 физически уводит на другой адрес, и старой страницы больше нет, а rel="canonical" оставляет все адреса рабочими и лишь указывает поисковику, какую версию считать главной.
Дубли с параметрами — это canonical, настоящий переезд страницы — это 301, и путать их не стоит. Тему я разобрал отдельно: canonical против редиректа — что выбрать и когда.
302 против 307 на практике
Оба кода временные, и вся разница между ними сводится к методу запроса: при 302 клиент может переиграть POST в GET, и браузеры исторически так и делают, а при 307 метод и тело сохраняются строго.
Что выбирать? Для обычной страницы или ссылки бери 302, потому что он проще и понятен повсеместно, а для временного перенаправления POST бери 307, иначе данные потеряются при смене метода, и ты об этом узнаешь последним.
Есть ещё нюанс, который иногда пугает: браузерный 307 генерируется внутренним механизмом HSTS при принудительном переходе с http на https. Это не твой серверный редирект, и настраивать его не нужно.
Для SEO выбор между 302 и 307 не важен вовсе, потому что оба временные и движок трактует их одинаково. Значение имеет только сценарий с методом запроса.
Что это значит для ИИ-поиска
ИИ-краулеры вроде GPTBot, PerplexityBot и ClaudeBot тоже идут по редиректам, и здесь ставки, пожалуй, выше. Если процитированный адрес отвечает битым или зацикленным переходом, ты теряешь самый дорогой трафик — человека, который уже прочитал ответ и решил кликнуть!
Временный редирект на постоянном переезде сбивает движки с толку точно так же, как поисковик: они продолжают держать в памяти старый адрес и цитировать его. Правило то же самое — постоянный переезд закрывай кодом 301 или 308 на релевантную страницу.
Частые ошибки
Первая и самая дорогая — 302 вместо 301 на постоянном переезде, потому что склейка сигналов откладывается, старый адрес висит в индексе, а новый растёт медленно.
Вторая — цепочки переходов вида A → B → C. Каждый шаг теряет немного веса и замедляет обход, поэтому держи один переход до финального адреса.
Третья — массовый редирект всего подряд на главную, и вот это уже по-настоящему больно! Google считает это «мягкой 404», вес не передаётся никуда, так что веди на релевантную страницу или отдавай честную 404.
Четвёртая — несколько переходов при связке http, https и www, которые обычно накапливаются у тебя годами по одному. Собери их в один 301 сразу до финального адреса.
Пятая — meta-refresh или редирект на JavaScript вместо серверного 3xx: работает медленнее, как сигнал заметно слабее, поэтому делай переадресацию на сервере и ничего не изобретай.
Шестая, самая незаметная — не обновлённые внутренние ссылки. Даже при рабочем редиректе ссылайся сразу на финальный адрес, а не гоняй посетителя и краулера через лишний переход, который к тому же однажды кто-нибудь случайно выпилит.
Сколько ждать результата после переезда
Вопрос, который возникает сразу после настройки: когда новый адрес заменит старый в выдаче? Честный ответ — от нескольких дней до нескольких месяцев, и разброс зависит в первую очередь от того, как часто поисковик заходит на конкретную страницу, а не от того, как хорошо ты всё настроил.
Популярную страницу, которую обходят ежедневно, переклеивают за неделю или две, а глубокую страницу из старого раздела, куда бот заглядывает раз в квартал, могут переклеивать месяцами. Ускорить это можно ровно одним способом — дать роботу поводов зайти: обнови карту сайта, поставь ссылки на новый адрес с живых страниц и отправь его на переобход руками.
Что при этом нормально видеть в отчётах? Временный провал показов на пару недель — обычное явление при любом крупном переезде, и паниковать из-за него не стоит. Ненормально другое: если через месяц старый адрес всё ещё показывается в выдаче вместо нового, значит редирект либо не тот, либо не срабатывает для бота.
Проверить последнее проще всего запросом от имени краулера, а не из браузера, и вот почему: бывает, что сервер отдаёт человеку правильный 301, а роботу — 200 со старым содержимым, потому что кто-то когда-то настроил отдельное правило для кэша (как не сложно догадаться, этот кто-то давно уволился). Такие расхождения находятся только измерением.
Как проверить свои редиректы
Порядок такой, и я иду по нему сам. Сначала прогоняю адрес через проверку редиректов и смотрю всю цепочку целиком вместе с финальным кодом. Дальше заглядываю в заголовки ответа и убеждаюсь, какой именно статус отдаёт сервер.
И последнее, о чём забывают чаще всего: пройди по списку своих старых адресов целиком, а не по паре примеров, потому что редиректы обычно ломаются не там, где ты смотришь, а в глубине каталога, куда давно не заходил ни один живой человек.
Потом сверь три вещи: постоянные переезды закрыты кодами 301 или 308, цепочек и петель нет, а цель редиректа релевантна исходной странице. На этом проверка закончена, можно выдыхать. Хотя нет — сначала сходи глянь свои старые адреса, я подожду.
Источники
- MDN Web Docs — HTTP redirections (301/302/303/307/308).
- Google Search Central — Redirects and Google Search (постоянные против временных, передача сигналов).
- RFC 7231 и RFC 7238 — семантика 3xx и кода 308.
- Google Content Warehouse API leak (2024) — поля
urlAfterRedirectsFp,forwardingdup.
Частые вопросы
В чём разница между 301 и 308?
Оба постоянные и передают сигналы новому URL. Разница в методе запроса: 301 разрешает сменить POST на GET, 308 сохраняет метод. Для обычных страниц берут 301, для API с POST — 308.
301 или 302 для SEO?
Для постоянного переезда — только 301: он переносит ранжирующие сигналы и заменяет старый URL новым. 302 — для действительно временных ситуаций (тех. работы, акция, A/B-тест).
Передаёт ли 302 «вес»?
302 задуман как временный, поэтому Google держит в индексе исходный URL. Долгоживущий 302 со временем может трактоваться как постоянный, но полагаться на это не стоит — на постоянный переезд ставь 301.
Что такое 307 и когда он нужен?
307 — временный редирект с сохранением метода запроса. Нужен, когда временно перенаправляешь POST-форму или запрос с телом, который нельзя превратить в GET.
Какой редирект для партнёрских ссылок?
Обычно 302 через внутренний трекер /go/… — но не «чтобы спрятать ссылку»: Google всё равно резолвит конечный URL. 302 удобен потому, что оффер временный и ротируется, а трекер не нужно индексировать. От «thin affiliate» защищает rel="sponsored" и качество контента, а не код редиректа.
Новые статьи — на почту
Разборы GEO/SEO от автономной команды. Без спама — отписка в любой момент.
Комментарии