301 vs 302 vs 307 vs 308 Redirects
Compare 301, 302, 307, and 308 redirects, learn when each should be used, how methods are handled, and what permanent versus temporary means for SEO.
The difference between 301, 302, 307, and 308 is not simply four ways to send a visitor to another page. The codes communicate two important things: whether the move is permanent or temporary, and how the client's HTTP request method should be handled at the destination.
For ordinary page navigation, several redirect types can look identical in a browser. You enter one URL and land on another. The distinction becomes important during site migrations, URL restructuring, maintenance, A/B testing, ecommerce flows, forms, APIs, and any request where preserving POST, PUT, or another method matters.
The short comparison
| Status | Meaning | Permanent? | Method preservation |
|---|---|---|---|
301 | Moved Permanently | Yes | Historically not guaranteed for non GET requests |
302 | Found | No | Historically not guaranteed for non GET requests |
307 | Temporary Redirect | No | Yes |
308 | Permanent Redirect | Yes | Yes |
All four typically send the destination in the HTTP Location header.
The practical decision begins with permanence. If the old URL has been replaced for the long term, use a permanent redirect. If the original URL should remain the primary address and the move is temporary, use a temporary redirect.
What a 301 redirect means
301 Moved Permanently tells clients that the requested resource now has a permanent location elsewhere.
Typical uses include:
- replacing an old page with a new URL
- moving from one URL structure to another
- consolidating duplicate hostname or protocol variants
- migrating a site or section to a new domain
- redirecting a permanently renamed resource
For search engines, permanence is important. Google documents 301 as a strong signal that the redirect target should be processed instead of the source. During a planned URL migration, a server side permanent redirect is therefore the normal choice when the old URL truly has a new permanent equivalent.
What a 302 redirect means
302 Found is commonly used for a temporary redirect. It tells clients that the resource is temporarily available at another location while the original URL remains relevant.
Good use cases can include a temporary campaign destination, short maintenance flow, limited experiment, or another situation where you expect to restore the original destination.
Google treats temporary redirects as weaker signals than permanent redirects for deciding which URL should be processed as the target. That is why a permanent migration should not casually use 302 simply because the browser behavior appears correct.
A temporary redirect is not inherently bad for SEO. It is appropriate when the move really is temporary.
Why 307 exists when 302 already redirects temporarily
The important difference is request method handling.
Historically, user agents did not always preserve the original method when following 301 or 302. A request submitted as POST, for example, might be followed as a GET at the destination. Web behavior evolved around that history.
307 Temporary Redirect removes the ambiguity. The redirected request must use the same method as the original request. A POST remains a POST.
That makes 307 useful when a temporary redirect is required but changing the request method could break application behavior or alter the meaning of the request.
For ordinary GET page requests, users may not notice a practical difference between 302 and 307. For APIs and form submissions, the distinction can be critical.
Why 308 exists when 301 is already permanent
308 Permanent Redirect is the permanent counterpart to 307. It communicates a permanent move while preserving the original HTTP method.
If a POST request reaches a URL that responds with 308, the client should repeat that POST at the new destination rather than converting it to GET.
From a search perspective, Google groups 308 with permanent redirects and treats it equivalently to 301 for the redirect signal. From an HTTP semantics perspective, 308 provides explicit method preservation.
301 versus 308: which permanent redirect should you use?
For normal web pages requested with GET, 301 remains a widely understood and conventional choice. It is suitable for the majority of SEO migrations and permanent page moves.
Choose 308 when permanent movement and strict method preservation are both important. This is especially relevant to application endpoints and APIs where requests may use methods other than GET.
Do not choose a code merely because one sounds newer. Choose the semantics that match the resource and client behavior you need.
302 versus 307: which temporary redirect should you use?
Use a temporary redirect when you expect the original URL to become the active destination again or otherwise remain the long term reference.
302 is common for ordinary web navigation. 307 is the clearer choice when the request method and body must be preserved exactly.
If your application accepts a form submission, payment request, API action, or another non GET method, test redirect behavior carefully. A redirect that is harmless for a link click can be wrong for an application request.
Redirects and the Location header
A redirect response normally includes a Location header containing the target URL. For example:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-pageA checker should therefore show both the status code and destination. If a URL returns a 3xx response without a usable destination, the redirect may be malformed.
When diagnosing a redirect, verify the complete path rather than only the first response. The target may immediately redirect again, which can create a chain.
SEO mistakes caused by choosing the wrong redirect
The first mistake is using a temporary redirect for a permanent site move without a real temporary reason. Search engines can eventually infer intent, but clear permanent signaling is preferable when the move is permanent.
The second is using a permanent redirect for something that will soon return to the original URL. That tells clients the move is intended to last.
The third is redirecting unrelated old URLs to a homepage or generic category instead of mapping each valuable URL to its closest replacement. Redirect semantics do not make an irrelevant target relevant.
The fourth is focusing on the status code while ignoring chains, loops, canonicals, internal links, and sitemaps. A correct 301 can still be part of a poor migration if every internal link points to an intermediate URL.
Redirect choice during a site migration
For a migration with changed URLs, create a one to one mapping from each important old URL to its best new equivalent. Use server side permanent redirects where technically possible. Google specifically recommends permanent HTTP redirects such as 301 and 308 for site moves.
Update internal links to point directly to the final URLs. Update canonical references and sitemaps as well. Then crawl or check the old URLs and confirm each one reaches the intended 200 destination without unnecessary hops.
Do not remove migration redirects too quickly. Old links, bookmarks, external links, and search systems may continue requesting old addresses for a long time.
A decision rule you can actually use
Ask two questions:
- Is the move permanent or temporary?
- Must the original request method be preserved?
Permanent plus normal page navigation usually points to 301. Permanent plus strict method preservation points to 308. Temporary plus ordinary navigation often uses 302. Temporary plus strict method preservation points to 307.
Then verify the implementation with an HTTP redirect checker rather than assuming the framework or server returned the code you intended.
Questions and answers
Frequently Asked Questions
Does Google treat 308 redirects like 301 redirects?
Google documents 308 as equivalent to 301 for its crawling and redirect processing. Both are permanent redirects and act as strong signals that the destination should be processed. They still differ in HTTP method semantics, with 308 explicitly preserving the original method.
Can I use a 302 redirect for a temporary maintenance page?
Yes, when the move is genuinely temporary and the original URL should remain the long term address. Make sure the temporary destination and server behavior are appropriate for the maintenance scenario, and restore the original response when maintenance is complete.
What happens to a POST request after a 307 redirect?
The redirected request keeps the same HTTP method. A POST remains a POST, and the method is not intentionally converted to GET. That is the defining practical advantage of 307 over historically ambiguous temporary redirect behavior.
Should every HTTP to HTTPS redirect use 308?
Not necessarily. 301 is a conventional permanent redirect for normal page requests and is widely used for HTTP to HTTPS canonicalization. 308 is appropriate when you specifically need permanent semantics with guaranteed method preservation. The important point is that the redirect is intentional, direct, and permanent when the HTTPS move is permanent.
Keep learning
Related Guides
HTTP Status Codes Explained for Website Owners and SEOs
Every time a browser, crawler, app, or monitoring tool requests a URL, the server responds with an HTTP status code. That three digit number is one of the quickest ways to understand what happened to the request. It can tell you that the page loaded successfully, moved elsewhere, was not found, was blocked, or failed because of a server problem.
Read GuideHow to Find and Fix Redirect Chains and Redirect Loops
A redirect is supposed to move a request from one URL to another. Problems begin when the destination redirects again, and again, or eventually points back to a URL already visited. The first pattern is a redirect chain. The second is a redirect loop.
Read GuideHTTP Headers for Technical SEO and Website Diagnostics
HTTP headers are metadata exchanged with web requests and responses. They can explain why a page redirects, whether a PDF carries a `noindex` directive, what content type a server returned, how a response may be cached, and which infrastructure layer appears to have handled the request.
Read Guide