Redirect Management Guide for SEO | Symaxx
Master redirect management for SEO. Learn when to use 301, 302, and 307 redirects, how to avoid redirect chains, and how to preserve link equity during URL changes.
Redirects tell browsers and search engines that a URL has moved. Using the wrong redirect type — or creating redirect chains and loops — can silently destroy rankings, waste crawl budget, and leak link equity. Proper redirect management is one of the most impactful technical SEO skills, yet one of the most commonly mishandled.
- 301 (Moved Permanently): Use when a URL has permanently moved. Passes ~95-99% of link equity. This is the default choice for SEO.
- 302 (Found / Temporary): Use only for genuinely temporary moves (A/B tests, maintenance). Does NOT pass link equity reliably.
- 307 (Temporary Redirect): HTTP/1.1 equivalent of 302. Preserves the request method (POST stays POST). Same SEO treatment as 302.
- 308 (Permanent Redirect): HTTP/1.1 equivalent of 301. Preserves request method. Same SEO treatment as 301.
- Redirect chains (A → B → C) waste crawl budget and dilute link equity. Max one hop.
- Redirect loops (A → B → A) break pages entirely.
If you want the full breakdown, continue below.
How Redirects Work
When a browser or crawler requests a URL, the server responds with an HTTP status code. Redirect codes (3xx) tell the client to go to a different URL instead:
Browser requests: /old-page
Server responds: 301, Location: /new-page
Browser follows: /new-page
Server responds: 200 OK (content served)
Search engines follow the same process. Googlebot notes the redirect type and updates its index accordingly.
Redirect Types Compared
| Code | Name | Permanence | Link Equity | Use Case |
|---|---|---|---|---|
| 301 | Moved Permanently | Permanent | ✅ Passes ~95-99% | Default for URL changes, site migrations, slug updates |
| 302 | Found | Temporary | ❌ Does not reliably pass | A/B tests, geo-targeting, maintenance pages |
| 307 | Temporary Redirect | Temporary | ❌ Does not reliably pass | Same as 302 but preserves HTTP method |
| 308 | Permanent Redirect | Permanent | ✅ Same as 301 | Same as 301 but preserves HTTP method |
| Meta refresh | Client-side | Varies | ⚠️ Partial | Avoid for SEO — slow and unreliable |
| JavaScript redirect | Client-side | Varies | ⚠️ Partial | Avoid for SEO — may not be followed |
When to Use 301 Redirects
Use 301 redirects whenever a URL change is permanent:
- Changing URL slugs:
/services/seo→/seo - Site migrations:
oldsite.com/page→newsite.com/page - HTTPS migration:
http://→https:// - Domain consolidation:
www.→ non-www (or vice versa) - Merging pages: Two similar pages consolidated into one
- Removing pages: Old page redirected to the most relevant existing page
- Fixing trailing slashes:
/page/→/page(or vice versa, consistently)
301 in Next.js
// next.config.ts — static redirects
const nextConfig = {
async redirects() {
return [
{
source: '/old-url',
destination: '/new-url',
permanent: true, // 301
},
]
},
}
// App Router — dynamic redirect in server component
import { redirect } from 'next/navigation'
export default function OldPage() {
redirect('/new-url') // Default is 307!
// For permanent: use permanentRedirect()
}
Next.js gotcha:
redirect()defaults to 307 (temporary). UsepermanentRedirect()fromnext/navigationfor 308 (permanent). Or configure redirects innext.config.tswhere you can setpermanent: truefor a proper 301.
When to Use 302/307 Redirects
Use temporary redirects only when:
- A/B testing: Temporarily showing different versions of a page
- Geo-targeting: Redirecting users based on location (the original URL should remain indexable)
- Maintenance mode: Temporarily redirecting during site work
- Seasonal content: Temporarily redirecting to relevant seasonal pages
- Login flows: Redirecting unauthenticated users to login page
If you are unsure, use 301. Most redirect situations are permanent.
Common Redirect Mistakes
Mistake 1: Using 302 When You Mean 301
This is the most common redirect mistake. When a page has permanently moved, a 302 tells Google "this is temporary, keep the old URL indexed." The result: the old URL stays in the index, the new URL does not receive link equity, and you lose ranking power.
How to detect: Crawl your site with Screaming Frog or similar. Filter for 302 responses. Review each one — is it genuinely temporary? If not, change to 301.
Mistake 2: Redirect Chains
A redirect chain occurs when URL A redirects to URL B, which redirects to URL C:
/old-page → /renamed-page → /final-page
Problems:
- Each hop loses a small amount of link equity
- Googlebot may stop following after 5+ hops
- Page load slows as the browser follows each redirect
- Crawl budget is wasted on intermediate hops
Fix: Update all redirects to point directly to the final destination. A should point to C, not to B.
Mistake 3: Redirect Loops
A redirect loop occurs when URL A redirects to URL B, which redirects back to URL A:
/page-a → /page-b → /page-a (infinite loop)
This completely breaks the page — browsers show an "ERR_TOO_MANY_REDIRECTS" error and Googlebot drops both URLs from the index.
Fix: Map all redirects in a spreadsheet and trace each chain to ensure no loops exist.
Mistake 4: Not Redirecting After URL Changes
Changing a URL slug without setting up a redirect creates a 404 that loses all accumulated link equity and rankings. Always redirect old URLs to new ones.
Mistake 5: Redirecting Everything to the Homepage
When removing pages, lazy redirect management sends all old URLs to the homepage. Google treats this as a "soft 404" — it recognises the homepage is not a relevant replacement and may ignore the redirect entirely.
Fix: Redirect each old URL to the most topically relevant existing page.
Mistake 6: Forgetting Internal Links
After setting up redirects, update internal links throughout the site to point directly to the new URLs. Redirects should be a safety net for external links, not a substitute for correct internal linking.
Redirect Auditing Process
Step 1 — Crawl the Site
Use Screaming Frog, Sitebulb, or a similar crawler:
- Filter responses by 3xx status codes
- Identify all redirect chains (2+ hops)
- Check for redirect loops
- Note any 302s that should be 301s
Step 2 — Map All Redirects
Create a spreadsheet with:
| Source URL | Redirect Type | Destination URL | Should Be | Action |
|---|---|---|---|---|
| /old-page | 302 | /new-page | 301 | Change to permanent |
| /page-a | 301 | /page-b → /page-c | 301 to /page-c | Fix chain |
Step 3 — Fix and Verify
- Update redirect rules (in
next.config.ts,.htaccess, or hosting config) - Update all internal links to point to final destinations
- Re-crawl to verify no chains or loops remain
- Monitor Search Console for crawl errors
Redirect Best Practices
- Default to 301 unless you have a specific reason for temporary
- Maximum one hop — no chains
- Update internal links to point to final URLs, not through redirects
- Keep a redirect map — a spreadsheet of all active redirects
- Monitor Search Console for redirect-related crawl errors
- Clean up old redirects after 12+ months — if the old URL has no more incoming links, the redirect can be removed
- Test redirects after implementation using
curl -Ior browser DevTools - Preserve URL parameters when relevant (e.g., UTM tracking)
Measuring Redirect Impact
After implementing redirect changes, monitor:
- Crawl stats in Search Console (should improve as chains are removed)
- Index coverage (previously 302'd URLs should now be indexed at the new location)
- Organic traffic to destination URLs (should increase as equity flows correctly)
- Page load speed (fewer hops = faster initial page load)
Key Takeaways
- 301 is the default choice for SEO — use it for all permanent URL changes.
- 302/307 are for genuinely temporary moves only. When in doubt, use 301.
- Redirect chains waste crawl budget and leak equity. Maximum one hop.
- Always update internal links to final URLs — redirects are for external safety.
- In Next.js,
redirect()defaults to 307. UsepermanentRedirect()ornext.config.tsfor 301/308. - Audit redirects quarterly using a crawling tool.
Quick Redirect Audit Checklist
- All permanent URL changes use 301 or 308
- No 302/307 redirects that should be permanent
- No redirect chains (every redirect goes directly to final destination)
- No redirect loops
- Internal links updated to point to final URLs (not through redirects)
- Redirect map documented and maintained
- Search Console crawl errors monitored
- Old redirects reviewed and cleaned up annually
Related SEO Documentation
Was this helpful?