HTTP 308 Permanent Redirect

엄격한 규칙을 가진 영구 리디렉션: URL이 영구적으로 이동했으며, 요청은 변경 없이 그대로 반복되어야 합니다.

HTTP 308의 의미

HTTP 308 Permanent Redirect는 메서드를 보존하는 301의 형제 격입니다. 리소스가 Location URL로 영구적으로 이동했으며, 클라이언트는 메서드를 변경하거나 본문을 누락하지 않고 해당 URL로 요청을 반복해야 합니다.

이는 API에서 특히 중요합니다. POST나 PUT을 받는 엔드포인트가 영구적으로 이동한 경우, 301을 사용하면 오래된 클라이언트가 자동으로 GET으로 재요청하면서 페이로드를 잃어버릴 수 있습니다. 308은 쓰기 요청을 그대로 유지시켜 줍니다.

308 응답의 일반적인 원인

  • 쓰기 요청을 받는 API 엔드포인트가 새 경로나 도메인으로 영구 이동한 경우.
  • 메서드를 보존하도록 설정된 인프라 수준의 정규화(예: Cloudflare나 로드 밸런서).
  • 트레일링 슬래시 정규화를 위해 기본적으로 308을 사용하는 프레임워크(Next.js, 일부 CDN).

개발자를 위한 모범 사례

  • GET이 아닌 요청이 이전 URL로 올 가능성이 있다면 항상 301 대신 308을 선택하세요.
  • 301과 마찬가지로 한 번의 홉으로 리디렉션하고, 리디렉션을 장기간 유지하세요.
  • 이전 API 클라이언트가 308을 제대로 처리하는지 확인하세요 — 아주 오래된 HTTP 라이브러리는 자동으로 따라가지 못할 수 있습니다.

응답 예시

HTTP/1.1 308 Permanent Redirect
Location: https://api.example.com/v2/upload

SEO 영향

검색 엔진 입장에서 308은 301과 동등합니다. 대상 URL로 색인 및 순위 신호를 이전하는 영구 이동입니다. 둘 중 무엇을 선택할지는 SEO가 아니라 클라이언트 특성에 따라 결정하세요.

자주 묻는 질문

SEO 관점에서 308은 301과 같나요?

예 — Google은 둘 다 영구 이동으로 처리하며 새 URL로 신호를 이전합니다.

301 대신 308이 필요한 경우는 언제인가요?

리디렉션되는 요청이 POST, PUT, PATCH 또는 DELETE일 수 있고 메서드와 본문을 유지해야 하는 경우입니다.

모든 브라우저가 308을 지원하나요?

모든 최신 브라우저는 지원합니다. 아주 오래된 클라이언트(예: Windows 7 시절의 IE, 오래된 HTTP 라이브러리)에만 예외가 있었습니다.