307 редирект
307 редирект (временное перенаправление с сохранением метода) - HTTP-статус, указывающий, что запрашиваемая страница временно доступна по другому адресу, при этом метод запроса (GET, POST, PUT и др.) должен сохраняться. 307 является более современной альтернативой 302-редиректа для случаев, когда важно не изменять тип запроса.
В интернет-маркетинге и SEO 307 редирект используется в ситуациях, аналогичных 302, но с гарантией сохранения метода запроса. Это особенно важно для API и обработки форм.
Как работает 307 редирект
[править]При получении статуса 307 браузер или поисковый робот повторяет тот же метод запроса (GET, POST, PUT) на новый URL.
HTTP/1.1 307 Temporary Redirect Location: https://example.com/temp-page
Отличие от 302
[править]- 302 - также временное перенаправление, но метод запроса может быть изменён на GET (например, POST-запрос с данными формы может быть перенаправлен как GET-запрос).
- 307 - метод запроса сохраняется неизменным. Это гарантирует, что данные, отправленные методом POST, будут переданы на новый URL также методом POST.
Отличие от 308
[править]- 307 - временное перенаправление с сохранением метода.
- 308 - постоянное перенаправление с сохранением метода (аналог 301 для случаев с сохранением метода).
Когда использовать 307 редирект
[править]307 редирект применяется в ситуациях, где критически важно сохранить метод запроса.
Временное перемещение API-эндпоинтов
[править]При временной смене адресов API-методов важно сохранять метод запроса, чтобы не нарушить работу интеграций.
Временная обработка форм
[править]Если URL, на который отправляется форма, временно меняется, 307 гарантирует, что данные будут отправлены правильным методом (обычно POST) на новый адрес.
Временная загрузка файлов
[править]Для сохранения метода POST при временной загрузке файлов на новый адрес.
Технические работы
[править]Во время обновления API или обработчиков форм можно временно перенаправлять запросы на резервные эндпоинты.
Влияние на SEO
[править]С точки зрения SEO, 307 редирект работает аналогично 302.
Сохранение веса
[править]Поскольку 307 сигнализирует о временном перемещении, поисковые системы оставляют ссылочный вес на исходной странице.
Индексация
[править]Поисковые системы продолжают держать в индексе старый URL и периодически проверяют, не вернулась ли страница на место.
Длительное использование
[править]Если 307 редирект используется слишком долго (месяцами), поисковые системы могут начать воспринимать его как постоянный, однако это не гарантировано и зависит от конкретного алгоритма.
Как настроить 307 редирект
[править]Способ настройки зависит от типа веб-сервера или используемой технологии.
RewriteRule ^old-api/endpoint$ /new-api/endpoint [R=307,L]
rewrite ^/old-api/endpoint$ /new-api/endpoint redirect;
Или с помощью return:
location /old-api/endpoint {
return 307 /new-api/endpoint;
}
header("HTTP/1.1 307 Temporary Redirect");
header("Location: /new-api/endpoint");
exit();
res.redirect(307, '/new-api/endpoint');
Когда использовать 302 вместо 307
[править]- Для обычных веб-страниц, где метод запроса не важен (например, при перенаправлении пользователей на временную заглушку).
- Когда нет уверенности в полной поддержке 307 старыми браузерами или прокси-серверами (хотя на практике это встречается редко).
- Для большинства стандартных временных перенаправлений пользователей, где разница между 302 и 307 не имеет значения.
Типичные ошибки
[править]- Использование 307 для страниц, на которые ведут ссылки из социальных сетей и мессенджеров - там метод запроса всегда GET, поэтому разница с 302 несущественна, а использование 307 избыточно.
- Игнорирование вопроса поддержки старыми браузерами (хотя это крайне редкая ситуация).
- Путаница между 307 (временный) и 308 (постоянный).
- Отсутствие корректной обработки 307 в старых библиотеках и API-клиентах.
