Ключевое отличие от 301 — постоянства нет. При 301 поиск понимает, что страница переехала навсегда: меняет URL в индексе и переносит накопленный вес. При 302 он считает, что оригинал скоро вернётся, поэтому держит в индексе старый адрес и вес никуда не передаёт.
Отсюда главная ошибка: поставить 302 на смену домена или склейку страниц вместо 301 — и потерять позиции. Временный код уместен, когда страница реально пропала ненадолго: тех-работы, A/B-тест, региональный редирект. Если перенос постоянный — всегда 301.
Браузер уходит на новый адрес, но запоминает старый.
Подходит для распродажи или временно закрытой страницы.
Поисковик держит в индексе старый URL и не передаёт вес.
На время акции «Чёрная пятница» страница /sale временно ведёт на лендинг через 302 — поисковик понимает, что переезд не навсегда. Когда акция кончится, оригинал вернётся; если бы поставили 301, старый URL выпал бы из индекса.
Технически 302 значит «Found» — ресурс временно доступен по другому адресу, тогда как 307 «Temporary Redirect» делает то же, но запрещает менять метод запроса (POST останется POST). Для SEO разницы между 302 и 307 почти нет: оба не передают вес. Реальная ловушка в другом — серверы и CMS часто отдают 302 по умолчанию. Битрикс, многие настройки nginx и плагины ставят 302 «из коробки», и вебмастер месяцами держит временный редирект там, где нужен 301, не замечая утечки веса.
Проверять код ответа надо не на глаз, а инструментом: в Яндекс.Вебмастере через «Инструменты → Проверка ответа сервера» или curl с флагом -I. Google в Search Console сообщает о цепочках редиректов отдельно, а Яндекс склеивает дубли медленнее — на смену 302 на 301 он реагирует за две-три недели переобхода. Если на странице висит ещё и canonical на другой URL вместе с 302, поисковик получает противоречивый сигнал и может оставить в индексе оба адреса.