HTTP 308 Permanent Redirect — What It Means and How to Fix It

The HTTP 308 Permanent Redirect status code indicates that the requested resource has been permanently moved to a new URI, and all future requests should use the new URI. Unlike 301, it explicitly forbids changing the request method (e.g., POST to GET) when redirecting.

Last updated: 2026-06-11

RECOMMENDED

Essential Reading: Designing Data-Intensive Applications

The system design bible for software engineers. Learn to build reliable, scalable, and maintainable systems.

View on Amazon →
Status Code 308
Name Permanent Redirect

Common Causes

  • Website or API endpoint URL structure has been permanently changed.
  • Migration of a resource to a new domain or subdomain.
  • Consolidation of multiple URLs pointing to the same resource.
  • Enforcing HTTPS for an entire site or specific paths.

Code Examples to Handle HTTP 308

curl -I https://httpbin.org/status/308

How to Fix It

  1. Verify the 'Location' header in the 308 response to identify the new, correct URI.
  2. Update all internal and external links, bookmarks, and configurations to point to the new URI.
  3. For server-side issues, review web server (e.g., Apache, Nginx) or application (e.g., Node.js, Python) redirect configurations to ensure they are correctly set to 308 for permanent moves.
  4. Clear browser caches or DNS caches if you suspect outdated information is causing the redirect loop or incorrect redirection.
💡 Example: A company decides to restructure its API endpoints, moving all user-related resources from `/api/users` to `/api/v2/accounts`. They configure their server to issue a 308 Permanent Redirect for any requests to the old `/api/users` path, ensuring that client applications continue to use the original HTTP method (e.g., POSTing new user data) when redirected to the new `/api/v2/accounts` path.
🛠️ Developer Tip: Always use 308 for permanent redirects when you want to guarantee that the original HTTP method (e.g., POST, PUT) is preserved during the redirection, which is crucial for API endpoints and form submissions.

Related Status Codes

Frequently Asked Questions

What causes HTTP 308?

HTTP 308 is caused by server-side configurations that indicate a resource has permanently moved to a new URL. This is typically set up when a website or API changes its URL structure and wants to ensure that clients update their references and preserve the original HTTP method.

How do I fix HTTP 308?

To fix HTTP 308, you generally need to update the client-side code or configuration to use the new URL provided in the 'Location' header of the 308 response. If you are the server administrator, ensure your redirect rules are correctly configured to point to the intended permanent location.