301 vs 302 redirect: when to use each
7,950 organic clicks/mo and 557,000 impressions/mo can still sit behind the wrong redirect type. If Google sees a permanent move as temporary, or a chain instead of one hop, you leak crawl budget and delay consolidation.
Redirect types overview
The crawl logs usually tell the story before the rankings do. On a site with 16,100 indexed pages, 591,000 not indexed, and 0 external backlinks, the redirect layer becomes the rate-limiter for consolidation.
A redirect is not just a URL swap. It is a signal transfer mechanism. Google has to decide whether the move is permanent, temporary, method-preserving, or just an HTML hint that can be ignored.
For the enzymes.bio audit, the main issue was not raw traffic. It was signal placement: 7,950 organic clicks/mo in May 2026, up from 2,770 in May 2025, yet only 1.4% sitewide CTR and an average position of 12.4. With that much index bloat, bad redirect handling compounds quickly.
Use redirects when the destination should replace the source. Use canonicals when both URLs must stay live, but one should be treated as the preferred version. Use meta refresh only when you have no server-side option, because it is weaker and slower to resolve.
301 vs 302 logic
301 for permanent moves
Use 301 when the source URL is gone for good: site migrations, slug changes, protocol changes, or merged content. Google usually consolidates signals to the target after crawl and recrawl.
302 for temporary states
Use 302 when the source should come back: short A/B tests, temporary maintenance routing, or seasonal swaps. If the change becomes permanent, switch it to 301 before it calcifies in search.
307 for method-preserving temp
Use 307 when the HTTP method must stay intact. That matters for form posts and API-style endpoints. For ordinary SEO page moves, 301 or 302 is the normal decision.
308 for permanent method-preserving
Use 308 when the move is permanent and the request method must not change. It is the stricter permanent version of 301, but many site teams still standardize on 301 for page-level redirects.
Canonical for duplicates
Use rel="canonical" when the duplicate URL must remain crawlable, such as product filters or parameter variants. If the duplicate should never be served, redirect it instead. See canonical tags complete guide.
Meta refresh as fallback
meta refresh is a browser-level redirect, not a server response. It is slower, can create a poor UX, and is weaker for redirect for seo. Use it only when server access is unavailable.
301 vs 302 rules
| Field | 301 | 302 |
|---|---|---|
Intent | Permanent redirect | Temporary redirect |
SEO signal | Consolidates signals to target | Usually keeps source indexed longer |
Best use | Migrations, slug changes, HTTPS, consolidation | A/B tests, temporary outages, geo-routing tests |
Risk if misused | Slow consolidation or wrong canonical cluster | Search engines may treat a temporary move like indecision |
Server caching | Often cacheable by browsers and crawlers | Can be cached, but semantics say it is temporary |
When to change | Keep as final state | Upgrade to 301 when the move is permanent |
307 and 308 rules
HTTP status codes matter because they describe intent, not just destination. 307 and 308 preserve the request method; 301 and 302 are the older browser-era defaults that can be more forgiving, but less strict.
For SEO, the practical decision tree is simple:
- Permanent page move:
301 - Temporary page move:
302or307 - Permanent method-preserving move:
308 - Duplicate URL that should still exist: canonical tag, not a redirect
301 usually wins when the parameter is not needed and never should be indexed. If the parameter is part of a live experience, keep the URL and canonicalize the variant. The wrong choice here creates redirect chains and wastes crawl budget.Canonical or redirect
A canonical tag is a hint. A redirect is an instruction. That distinction matters when deciding 301 vs 302 redirect versus a preferred URL signal.
Use a redirect when the old URL should stop serving content. Use a canonical when multiple URLs need to remain accessible, but one should absorb signals. Typical examples are sort orders, tracking parameters, printable views, and filtered faceted URLs.
If you are unsure, ask one question: should the source URL still be usable by a human? If yes, canonical may be enough. If no, redirect it.
The Performance › Search results report will usually show the mess first: impressions spread across duplicates, average position held down, and CTR diluted across variants.
Server-side implementation
### Apache `.htaccess`
RewriteEngine On
RewriteRule ^old-page/?$ /new-page/ [R=301,L]
RewriteRule ^temp-a-b-test/?$ /new-page/?variant=b [R=302,L]
### nginx
rewrite ^/old-page/?$ /new-page/ permanent;
rewrite ^/temp-a-b-test/?$ /new-page/?variant=b redirect;
### HTML fallback for `meta refresh`
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=/new-page/">
<link rel="canonical" href="https://example.com/new-page/">
</head>
<body>
<p>If you are not redirected, go to <a href="/new-page/">/new-page/</a>.</p>
</body>
</html> Cloudflare bulk redirects
{
"source": "/old-page/",
"target": "/new-page/",
"status_code": 301,
"preserve_query_string": true,
"comments": "Use for high-volume redirect sets when the origin should not do the work. Keep rules flat to avoid chains."
} Check a redirect chain
curl -I https://example.com/old-page/
# Look for:
# HTTP/2 301
# location: /intermediate/
# HTTP/2 301
# location: /new-page/
# Goal:
# one hop, final 200 Chains and hop limits
Every extra hop adds latency, crawl waste, and failure risk. A chain like old -> temp -> final often looks harmless in a browser, but it can split signal transfer, delay discovery, and create inconsistent canonical signals.
Aim for one hop from source to final destination. Two hops is already a cleanup task. Three or more usually means the redirect map was layered across migrations, CMS edits, and CDN rules.
This is where fix redirect chain too long becomes more than a cleanup article. It is a crawl-efficiency fix. The redirect chain checker exists because you should not inspect hundreds of URLs by hand.
For the enzymes.bio scale, Links › External links showing 0 external backlinks means you cannot afford to waste the internal signal you do have. Every chain is a tax on weak authority.
GSC checks
`Indexing › Pages`
Check whether redirected URLs are still being discovered, whether Page with redirect is growing, and whether old URLs are stuck in the index.
`Performance › Search results`
Compare clicks, impressions, CTR, and average position before and after the redirect. On enzymes.bio, 7,950 clicks/mo and 11.8 average position in May 2026 showed growth, but not full consolidation.
`Settings › Crawl stats`
Use crawl stats to see whether Google is burning requests on redirect paths, parameter URLs, or loops. If crawl demand is high and indexation is messy, the redirect map is part of the bottleneck.
`Indexing › Sitemaps`
Make sure old URLs are removed from sitemaps and only final URLs are submitted. A sitemap should not reintroduce the redirect you just fixed.
`Links › External links`
If external links still point at old URLs, a 301 is still fine. Just do not chain them through multiple intermediates, because each hop increases the chance of partial signal loss.
`Enhancements › Breadcrumbs`
Breadcrumb paths should resolve to the canonical destination, not to redirecting ancestors. That keeps structured navigation cleaner and makes audits easier.
Fix checklist
- ✓
Decide whether the source URL is permanently dead or only temporarily unavailable.
- ✓
Map every old URL to a single final destination with no intermediate hop.
- ✓
Switch temporary
302rules to301once the move is permanent. - ✓
Keep
307and308only when method preservation matters. - ✓
Remove redirected URLs from internal links, sitemaps, and canonical mistakes.
- ✓
Use canonical tags for live duplicates, not for deleted URLs.
- ✓
Audit
Indexing › PagesforPage with redirectandAlternate page with proper canonical tag. - ✓
Confirm
Settings › Crawl statsis not wasting requests on redirect paths. - ✓
Test server rules before launch, especially if
.htaccess, nginx, and CDN rules all touch the same paths. - ✓
Document the final state in the migration plan from site migration SEO.
Audit snippets
The redirect layer had to support a site with 16,100 indexed pages and 591,000 not indexed. With that much duplication pressure, a clean one-hop redirect map mattered more than adding more pages.
Because there were no external backlinks, every internal redirect mistake carried more weight. The fix was to reduce chain length, strip dead parameters, and keep final URLs consistent in GSC.
Redirects were not just a crawl issue. Any lost session from a bad destination was expensive. A wrong 302 on a permanent move can keep the wrong URL alive long enough to fragment conversions.
Multilingual setups need extra care. Language routing can justify temporary redirects in some edge cases, but duplicate language URLs should still be canonicalized or normalized.
Common redirect questions
Is a 302 always bad for SEO?
No. A 302 is correct when the move is temporary. It becomes a problem when a permanent change stays temporary for months, because search engines keep treating the source as the likely primary URL.
Does Google treat 301 and 302 the same now?
Not in practice. Google is better at inferring intent than it used to be, but the status code still matters. If the move is permanent, send a permanent signal.
When should I use 307 or 308?
Use 307 for a temporary move that must preserve the request method, and 308 for a permanent move that must preserve the request method. For most page redirects, 301 and 302 are still the common choices.
Should canonical replace redirects?
No. Canonical is for duplicate URLs that should remain accessible. Redirects are for URLs that should stop serving content. If the old URL should vanish, redirect it.
Why are redirect chains bad?
Each hop adds latency and a chance of signal loss. Chains also make debugging harder, especially when .htaccess, nginx, and a CDN all rewrite the same path.
Can meta refresh work for SEO?
It can work as a fallback, but it is weaker than a server-side redirect. Treat meta refresh seo as a last resort, not a normal pattern.