308 Redirect
A 308 Redirect is an HTTP status code (308 Permanent Redirect) that tells browsers and search engines a URL has permanently moved to a new address. Like a 301 redirect, it signals a permanent move, but with one critical distinction: the original HTTP method (GET, POST, etc.) and request body must be preserved exactly when following the redirect.
A 308 Redirect is an HTTP status code (308 Permanent Redirect) that tells browsers and search engines a URL has permanently moved to a new address. Like a 301 redirect, it signals a permanent move, but with one critical distinction: the original HTTP method (GET, POST, etc.) and request body must be preserved exactly when following the redirect.
Why It Matters
A 308 redirect transfers link equity to the new URL while preserving the request method during a permanent move. Google has officially confirmed that it treats 308 redirects the same as 301 redirects, including how PageRank is passed. From an SEO perspective, both 301 and 308 are appropriate for permanent moves, but 308 is the safer choice when POST requests are involved. When search engines receive a 308 response, they will over time replace the old URL with the new URL in their index and transfer the link equity accumulated by the original URL to the new one.
Difference from 301
| Attribute | 308 (Permanent Redirect) | 301 (Moved Permanently) |
|---|---|---|
| HTTP method preservation | Strictly preserved (POST stays POST) | Method may change (POST can become GET) |
| Permanence | Permanent move | Permanent move |
| Link equity transfer | Transferred to new URL | Transferred to new URL |
| Search index | Old URL replaced by new URL | Old URL replaced by new URL |
| Browser support | All modern browsers | All browsers including legacy |
| Primary use case | Permanent moves requiring POST preservation | General permanent moves |
The 301 redirect has been in use since HTTP/1.0 and is supported by all browsers and crawlers, but some clients historically converted POST requests to GET when following a 301. The 308 status code was defined in RFC 7538 to resolve this issue. For simple page moves, a 301 is sufficient, but for permanent changes to API endpoints or form submission URLs, a 308 is more appropriate.
Use Cases
- Permanent API endpoint migration: When restructuring REST API URLs, endpoints that handle POST, PUT, or DELETE requests should use 308 redirects to ensure the client's request method is preserved.
- Permanent form submission URL changes: When URLs handling POST requests for sign-up, payment, or login forms are permanently changed, a 308 redirect prevents loss of user-submitted data.
- Domain migration with POST preservation: When migrating domains while also moving endpoints that receive POST requests, a 308 redirect safely forwards both the method and the data.
- HTTPS migration: When permanently switching from HTTP to HTTPS, using a 308 instead of a 301 is more precise if you want to guarantee POST requests are not converted to GET.
Related inblog Posts
How inblog Helps
inblog's dashboard uses 308 status codes for permanent redirects.