308 Permanent Redirect
Same as 301 but the request method and body must be preserved when following the redirect.
Status
HTTP/1.1 308 Permanent Redirect
Details
- Category: 3xx
- Status: Standard. Registered with IANA and defined by a current standards-track RFC.
- Specification: RFC 9110 §15.4.9, RFC 7538: Original definition
- Cacheable: Cacheable by default
- Response body: Allowed
- Retry: Safe to retry
308 is the method-preserving permanent redirect. Like 301 it tells clients and search engines to update their references, and like 307 it forbids rewriting a POST into a GET.
For API migrations it is the correct permanent code: callers update their base URL and their write requests keep working through the transition. For plain page moves 301 remains the more widely understood option, and both pass ranking signals.
Headers
- Location: Required. The new permanent URL, to be requested with the original method.
Common causes
- An API moved to a new host or path permanently.
- A canonical HTTPS or host redirect configured to preserve methods.
Usage notes
For clients
- Update the stored base URL and replay the original method against the new location.
- Confirm the client library follows 308 for non-GET methods. Older versions of several HTTP clients did not.
For servers
- Prefer 308 over 301 for endpoints that accept POST, PUT, PATCH, or DELETE.
- Keep the redirect in place long enough for cached clients and integrations to migrate.
Examples
Moving an API endpoint permanently
HTTP request
PUT /v1/items/44 HTTP/1.1
Host: old-api.example.com
Content-Type: application/json
{"name":"widget"}
HTTP response
HTTP/1.1 308 Permanent Redirect Location: https://api.example.com/v1/items/44
Browser compatibility
- Chrome: since 36
- Edge: since 12
- Firefox: since 14
- Opera: since 24
- Safari: since 7
Specifications
- RFC 9110 §15.4.9
- RFC 7538: Original definition