HTTP 308 Permanent Redirect
Постоянный редирект со строгими правилами: URL перемещён навсегда, и запрос нужно повторить без изменений.
Что означает HTTP 308
HTTP 308 Permanent Redirect — это сохраняющий метод аналог 301. Ресурс постоянно переехал по URL из Location, и клиенты должны повторить запрос туда, не меняя метод и не отбрасывая тело.
Это особенно важно для API: если эндпоинт, принимающий POST или PUT, перемещается на постоянной основе, 301 может незаметно заставить старых клиентов повторить запрос методом GET и потерять полезную нагрузку. 308 сохраняет запись в целости.
Частые причины ответов 308
- Эндпоинт API, принимающий запись, постоянно переехал на новый путь или домен.
- Каноникализация на уровне инфраструктуры (например, Cloudflare или балансировщик нагрузки), настроенная с сохранением методов.
- Фреймворк по умолчанию использует 308 для нормализации завершающего слэша (Next.js, некоторые CDN).
Хорошие практики для разработчиков
- Выбирайте 308 вместо 301 всегда, когда по старому URL могут прийти запросы, отличные от GET.
- Как и с 301, перенаправляйте за один переход и держите редирект на месте длительное время.
- Проверьте, что старые клиенты API обрабатывают 308 — очень старые HTTP-библиотеки могут не следовать по нему автоматически.
Пример ответа
HTTP/1.1 308 Permanent Redirect Location: https://api.example.com/v2/upload
Влияние на SEO
Для поисковых систем 308 эквивалентен 301: постоянное перемещение, передающее сигналы индексации и ранжирования на целевой URL. Выбирайте между ними исходя из клиентов, а не SEO.
Частые вопросы
Эквивалентен ли 308 и 301 для SEO?
Да — Google считает оба варианта постоянным перемещением и передаёт сигналы на новый URL.
Когда 308 обязателен вместо 301?
Когда перенаправляемые запросы могут быть POST, PUT, PATCH или DELETE, и метод с телом должны сохраниться.
Все ли браузеры поддерживают 308?
Все современные браузеры поддерживают. Пробелы были только у очень старых клиентов (например, IE эпохи Windows 7, древние HTTP-библиотеки).