HTTP 308 Permanent Redirect
A permanent redirect with strict rules: the URL moved for good, and the request must be repeated unchanged.
What HTTP 308 means
HTTP 308 Permanent Redirect is the method-preserving sibling of 301. The resource has permanently moved to the Location URL, and clients must repeat the request there without changing the method or dropping the body.
It matters most for APIs: if an endpoint that accepts POST or PUT moves permanently, a 301 could make old clients silently retry with GET and lose the payload. A 308 keeps the write intact.
Common causes of 308 responses
- An API endpoint accepting writes moved permanently to a new path or domain.
- Infrastructure-level canonicalization (e.g. Cloudflare or a load balancer) configured to preserve methods.
- A framework defaulting to 308 for trailing-slash normalization (Next.js, some CDNs).
Good practices for developers
- Choose 308 over 301 whenever non-GET requests can hit the old URL.
- As with 301, redirect in a single hop and keep the redirect in place long-term.
- Verify old API clients handle 308 — very old HTTP libraries may not follow it automatically.
Example response
HTTP/1.1 308 Permanent Redirect Location: https://api.example.com/v2/upload
SEO impact
For search engines a 308 is equivalent to a 301: a permanent move that transfers indexing and ranking signals to the target URL. Pick between them based on clients, not SEO.
FAQ
Is 308 the same as 301 for SEO?
Yes — Google treats both as a permanent move and transfers signals to the new URL.
When is 308 required instead of 301?
When redirected requests may be POST, PUT, PATCH or DELETE and the method and body must be preserved.
Do all browsers support 308?
All modern browsers do. Only very old clients (e.g. IE on Windows 7 era, ancient HTTP libraries) had gaps.