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.

Intermediate10 min readUpdated 05 Mar 2026Bukhosi Moyo

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.

Quick Answer
  • 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/pagenewsite.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). Use permanentRedirect() from next/navigation for 308 (permanent). Or configure redirects in next.config.ts where you can set permanent: true for 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

  1. Update redirect rules (in next.config.ts, .htaccess, or hosting config)
  2. Update all internal links to point to final destinations
  3. Re-crawl to verify no chains or loops remain
  4. 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 -I or 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. Use permanentRedirect() or next.config.ts for 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?