Skip to content
Webmaster Tools
Inspect & debugHTTP Status Codes308 Permanent Redirect

308 Permanent Redirect

What HTTP 308 Permanent Redirect means, how it differs from 301 by keeping the method and body, where frameworks send it, and how Google treats it for SEO.

All status codes

What 308 means

The resource has moved permanently to the URL in the Location header, and the client must repeat the request there with the same method and body. 308 was first defined in RFC 7538 (2015) and is now part of HTTP semantics in RFC 9110 §15.4.9.

HTTP/1.1 308 Permanent Redirect
Location: https://api.example.com/v2/orders

It is to 301 what 307 is to 302: the same meaning, minus the historical permission to turn a POST into a GET. A browser following a 301 after a form POST sends a GET without the form data; following a 308, it sends the same POST again. Like 301, a 308 is cacheable by default, and browsers remember it.

When to use it

  • Permanently moving an API endpoint that receives POST, PUT, PATCH or DELETE, so existing clients keep working.
  • Moving form targets and webhook URLs.
  • Anywhere you'd use a 301: for GET requests, both behave identically.

Where you'll see it without asking

  • Next.js uses 308 for permanent: true redirects in next.config.js, and for its trailing-slash normalisation (and 307 for temporary ones).
  • Vercel uses 308 by default for permanent redirects in vercel.json and for its HTTPS and trailing-slash redirects.
  • Cloudflare Redirect Rules and other CDN rule builders offer 308 next to 301, and some site generators pick it by default.

If an SEO tool flags 308s as unusual, that's not a problem in itself; what matters is that the redirect is permanent and goes straight to the final URL.

How to send it

nginx: return 308 https://api.example.com$request_uri;. Apache: Redirect 308 /old https://www.example.com/new, or RewriteRule ^old$ /new [R=308,L]. Cloudflare Redirect Rules let you pick 308. Express: res.redirect(308, '/new').

Compatibility: every current browser, curl and mainstream HTTP library supports 308. Internet Explorer 11 on Windows 7 and 8.1 did not, which used to be a reason to prefer 301; that no longer applies for most sites. Very old embedded clients may still not follow it.

308 and SEO

Google documents 308 as equivalent to 301: a strong signal that the redirect target should be canonical, with ranking signals consolidated on the new URL. The usual permanent-redirect advice applies: redirect each old URL straight to its final destination, avoid chains (Googlebot follows up to 10 hops), keep the redirects for at least a year, and update internal links, canonicals and sitemaps to the new URLs.

Check that a redirect returns 308 or 301 and lands on the right URL in one hop with the Redirect Checker.