HTTP 308 Permanent Redirect: What It Means and When You See It
Quick Answer
HTTP 308 Permanent Redirect is like 301 but the HTTP method must not change during redirect. A POST to the old URL becomes a POST to the new URL.
HTTP 308 vs 301
HTTP 308 Permanent Redirect is the method-preserving version of 301. Like 301, it tells clients the URL has moved permanently and to cache the new location. Unlike 301, a POST to a 308 endpoint redirects as a POST (not GET). Use 308 when permanently moving API endpoints that accept POST, PUT, or PATCH. Browser support for 308 is universal in modern browsers. Search engines treat 308 like 301 for PageRank transfer.
When to Use 308
Use 308 when permanently changing the URL of an API endpoint that receives non-GET requests. Example: moving /api/v1/users to /api/v2/users permanently while keeping POST support. In Next.js: { source: "/old", destination: "/new", permanent: true } generates 308 for API routes and 301 for page routes. For simple page URL changes, 301 is sufficient. 308 is mainly relevant for REST API versioning and webhook endpoint migrations.
Try the interactive tool
Convert any value instantly — no sign-up required
Frequently Asked Questions
Related Values
100
HTTP 100 Continue means the server has received the request headers and the client should proceed to send the request body. It is an interim response used to inform the client to continue.
101
HTTP 101 Switching Protocols indicates the server is switching to the protocol specified in the Upgrade header field. Commonly used when upgrading to WebSocket connections.
200
HTTP 200 OK is the standard success response. The request has succeeded and the server has returned the requested resource in the response body.
201
HTTP 201 Created means the request succeeded and a new resource was created as a result. The Location header typically points to the new resource URL.