302 vs 301

Found vs Moved Permanently

🔀302Found
📦301Moved Permanently

Redirect Codes: Permanent vs Temporary

Understanding the key differences between redirect types

Permanent Redirects
📦
301
Moved Permanently
Old-Style Permanent

Classic redirect

Resource has permanently moved. Browsers and search engines will update their bookmarks and indexes.

🌐POST /old-url
Server responds with new location
📦301 → /new-url
⚠️ May change to GET
Key behavior:
  • Browser caches the redirect
  • SEO: Link juice transferred
  • ⚠️ May change POST to GET
📍
🔒
308
Permanent Redirect
Modern Permanent

Method-preserving

Like 301, but guarantees the HTTP method and body won't change during redirect.

🌐POST /old-url
Server responds with new location
🔒308 → /new-url
✓ Keeps POST method
Key behavior:
  • Browser caches the redirect
  • SEO: Link juice transferred
  • ✓ Preserves HTTP method
🔐
Temporary Redirects
🔄
302
Found
Old-Style Temporary

Classic temporary

Resource is temporarily at another location. Original URL should still be used in the future.

🌐POST /temp-moved
Server responds with temp location
🔄302 → /temp-url
⚠️ May change to GET
Key behavior:
  • No browser caching
  • SEO: Original URL preserved
  • ⚠️ May change POST to GET
⏱️
🔃
307
Temporary Redirect
Modern Temporary

Method-preserving

Like 302, but guarantees the HTTP method and body won't change during redirect.

🌐POST /temp-moved
Server responds with temp location
🔃307 → /temp-url
✓ Keeps POST method
Key behavior:
  • No browser caching
  • SEO: Original URL preserved
  • ✓ Preserves HTTP method
🔄
Quick Decision Guide
Use Permanent (301/308) when:
  • URL has changed forever
  • You want search engines to update their index
  • Domain migration or restructuring
  • Old URL should never be used again
Use Temporary (302/307) when:
  • Resource is temporarily unavailable
  • A/B testing or maintenance mode
  • You want to keep the original URL active
  • Redirect might change or be removed soon
Use Modern (307/308) when:
  • Redirecting POST/PUT/DELETE requests
  • Request body must be preserved
  • Working with REST APIs
  • Modern application with strict HTTP semantics
💡
Key Insight

Permanent vs Temporary controls caching and SEO, while Old vs Modern controls HTTP method preservation. For APIs and POST requests, prefer 307/308. For simple page redirects, 301/302 are widely supported and sufficient.

Description

The URI of the requested resource has been changed temporarily.

When to Use
  • Legacy compatibility - prefer 307 for temporary redirects in new code
  • The redirect is temporary and the original URL should continue to be used
  • Warning: Historically changed POST to GET; behavior varies by client
Common Causes
  • Temporary maintenance redirect
  • A/B testing redirects
  • Temporary URL changes
Description

The URL of the requested resource has been changed permanently. The new URL is given in the response.

When to Use
  • The resource URL has changed permanently and will never return
  • You want search engines to update their index to the new URL
  • Consolidating multiple URLs to a canonical URL for SEO
Common Causes
  • Website restructured with new URLs
  • Domain name changed
  • Page permanently relocated