Runs in your browser. Your files and text never leave your device - nothing is uploaded.
3xx Redirection
What it means
Like 301, but guarantees the request method and body won't change on the redirected request.
| Property | Detail |
|---|---|
| Status class | 3xx Redirection |
| Defined in | RFC 9110, Section 15.4.9 — First specified in 2014 and standardised by RFC 7538 in 2015; RFC 9110 replaced RFC 7538 in 2022. |
| Cacheable by default | Yes. RFC 9110 lists it as heuristically cacheable, so a cache may reuse it without explicit freshness headers unless Cache-Control says otherwise. As with 301, browsers may reuse it without asking the server again. |
| Who needs to act | The site owner sets it; clients follow it. |
What does HTTP 308 Permanent Redirect mean?
HTTP 308 Permanent Redirect means the resource has moved to a new URL for good, given in the Location header, and the client must repeat the request there without changing the method or body. It is the method-preserving counterpart of 301. Browsers follow it and may cache it, and Google treats it the same as 301.
How 308 Permanent Redirect works
A 308 closes the gap 301 left open. Because browsers resend a POST that hits a 301 as a GET, permanently moving a form handler or API endpoint used to lose the request body. With 308 the client must send the same method and body to the new URL. Otherwise it behaves like 301: it is permanent, heuristically cacheable, and tells clients to update their references. RFC 9110 notes that 308 is much younger than its sibling codes, so very old clients might not recognise it; current browsers do.
Example 308 request and response
PUT /api/v1/profile HTTP/1.1
Host: api.example.com
Content-Type: application/json
HTTP/1.1 308 Permanent Redirect
Location: https://api.example.com/api/v2/profileThe client repeats the PUT, body included, at the v2 address and should use that address from now on.
When servers send 308 Permanent Redirect
- Permanent moves of API endpoints that receive POST, PUT or DELETE.
- Next.js permanentRedirect() and redirects configured with permanent: true.
- Trailing-slash normalisation: Next.js, for example, answers /about/ with a 308 to /about by default.
- HTTPS and domain migrations on hosts that use 308 for permanent redirects.
How to handle 308 Permanent Redirect
If you consume the API
- Update the stored base URL to the new location rather than relying on the redirect forever.
- Make sure your client can replay the request body when it follows the redirect.
If you run the site
- Choose 308 when non-GET requests reach the old URL; for plain page moves, 301 and 308 behave the same in browsers and in Google.
- Redirect each old URL directly to its final destination, and update internal links and sitemaps.
- Send Cache-Control on the redirect if you might need to reverse it soon.
308 and SEO
Google's documentation lists 308 as equivalent to 301: it follows the redirect and uses it as a strong signal that the destination should be canonical, so the new URL replaces the old one in search results. There is no search reason to prefer one over the other. Pick 308 when request methods other than GET must survive the redirect.
Related status codes
- 301 Moved Permanently: Permanent too, but browsers may change a POST into a GET.
- 307 Temporary Redirect: Keeps the method and body like 308, but is temporary.
- 410 Gone: For content that is gone with no new address.
Frequently asked questions
Like 301, but guarantees the request method and body won't change on the redirected request.
Used for permanent redirects that must preserve the original HTTP method, unlike 301 which some clients treat inconsistently.
Update links to the new URL; the redirect will preserve the original method automatically.
For ordinary web pages either works, because browsers and Google treat them alike for GET requests. Use 308 when clients might POST, PUT or DELETE to the old URL, since only 308 guarantees the method and body are preserved.
Sources
- RFC 9110, Section 15.4.9
- Google Search Central: Redirects and Google Search
- Google: How HTTP status codes affect Google's crawlers
Other 3xx Redirection codes
Reviewed by Raja Jahangir · Last reviewed: October 7, 2026
