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-библиотеки).