308 Permanent Redirect (RFC 7538)
This is an educational reference page about HTTP 308 Permanent Redirect. The page itself is served as 200 OK so it can be indexed as HTTP documentation.
This and all future requests should be directed to the given URI. 308 parallel the behaviour of 301, but does not allow the HTTP method to change. So, for example, submitting a form to a permanently redirected resource may continue smoothly.
What it means
HTTP 308 means the resource permanently moved and the client must preserve the request method and body.
Common causes
- Permanent API endpoint moves where POST, PUT, or PATCH must not become GET.
- Permanent URL canonicalization with strict method preservation.
- Modern redirects replacing ambiguous 301 behavior for non-GET requests.
How to fix it
- Use an absolute Location header for the permanent target.
- Update clients, docs, links, and sitemap URLs to the new target.
- Use 307 instead when the move is temporary.
Example response
HTTP/1.1 308 Permanent Redirect
Location: https://api.example.com/v2/resource
Developer notes
308 is permanent like 301, but unlike many 301 implementations it preserves the HTTP method.