← Back to status codes
HTTP Status Code
308 Permanent Redirect
RedirectionThe resource has been permanently moved, and the original request method should be preserved.
HTTP status code reference, response example, common causes, fixes, and related status codes.
What does HTTP 308 Permanent Redirect mean?
HTTP 308 Permanent Redirect is a status code sent by a server to indicate the result of an HTTP request.
Status codes help browsers, APIs, apps, and backend systems understand whether a request succeeded, failed, was redirected, or needs additional action.
In practice, HTTP 308 Permanent Redirect usually appears when a server responds under specific request, validation, permission, or infrastructure conditions.
Response example
HTTP/1.1 308 Permanent Redirect Location: https://example.com/new-route
HTTP example
HTTP/1.1 308 Permanent Redirect
Relevant headers
Location
Location: https://example.com/new-route
Common causes
- Permanent route migration
- Canonical redirect with method preservation
How to fix it
- Update clients and internal links to the final URL
- Verify redirect chains do not loop
Common mistakes
- Assuming the status code alone explains the full backend issue
- Ignoring related response headers that add important context
- Treating temporary errors as permanent failures
- Retrying too aggressively without checking the cause
- Debugging the frontend only when the problem is server-side
How browsers and APIs use it
Browsers, APIs, and backend services use HTTP status codes to understand the outcome of a request. Depending on the status code, an application may render content, retry a request, redirect the user, show an error, or trigger a different flow in the client or server.
Developer note
Use 308 when you want a permanent redirect but do not want the client to change POST into GET.