What it means
The resource has moved permanently, and clients must repeat the request at the new URL with the same method and body.
Common causes
- API paths moved permanently
- A framework enforcing trailing slashes or HTTPS
- Domain migrations that must preserve POST
How to fix it
As a client or visitor
Update the URL in your code and resend the same request. Very old clients may not support 308.
As the site or API owner
Use 308 for permanent moves of endpoints that receive POST or PUT. For plain pages, 301 and 308 behave the same for search engines.
Example response
HTTP/1.1
HTTP/1.1 308 Permanent Redirect
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Location: https://api.example.com/v2/items
Content-Length: 0 Specification
FAQ
› Does 308 pass SEO value like 301?
Yes. Google treats 308 the same as 301.
› Why does Next.js or Vercel return 308?
Their trailing-slash and redirect rules use 308 by default so methods are preserved.