TECHNICAL AUDIT

301 vs 302 Redirect for SEO: Which to Use and When

When to use a 301 permanent redirect vs a 302 temporary redirect for SEO, how each affects PageRank transfer, redirect chain costs, and how to implement them correctly.

Redirects are one of the most consequential technical SEO decisions you make. Use the wrong type, create chains, or implement them incorrectly and you can silently bleed PageRank for months. Use them correctly and you preserve every bit of link equity when moving or restructuring URLs.

This guide covers when to use 301 vs 302, how each affects PageRank, redirect chain costs, and how to implement them across common environments.

301 vs 302: the core difference

| | 301 Permanent | 302 Temporary | |---|---|---| | Meaning | This URL has permanently moved | This URL has temporarily moved | | PageRank transfer | Full transfer to destination | Ambiguous — Google may not transfer | | Browser caching | Browsers cache aggressively | Browsers cache briefly or not at all | | Use case | URL permanently changed | A/B tests, maintenance, seasonal pages | | Risk of misuse | None when used correctly | PageRank stays at the old URL |

The default rule: if you're moving a URL permanently — because a page was renamed, a site migrated to a new domain, or a URL structure was cleaned up — use a 301. The 302 is specifically for cases where the old URL will return.

How 301 redirects pass PageRank

When Googlebot follows a 301 redirect from URL A to URL B, PageRank from links pointing to A is attributed to B. Google has confirmed that a single 301 redirect passes "close to full" PageRank — the historical estimate is 99%+. For practical purposes, a 301 redirect is PageRank-neutral: you don't materially lose equity from the redirect itself.

What does cost PageRank:

  1. Redirect chains — A → B → C → D. Each hop in the chain costs some equity and increases crawl time. Google follows redirect chains up to 10 hops, but starts dropping PageRank transfer after 3–4 hops. Always redirect directly to the final destination.

  2. Redirect loops — A → B → A. Googlebot gives up after detecting the loop, and the page becomes uncrawlable.

  3. Redirecting to a 404 — A → B, but B returns a 404. The redirect passes no equity because there's no destination page.

When to use a 301

Use a 301 whenever a URL is permanently moving and won't return to its original location:

  • Domain migration: old-brand.comnew-brand.com
  • HTTP to HTTPS: http://example.com/pagehttps://example.com/page
  • www to non-www consolidation: www.example.comexample.com (or vice versa)
  • URL restructure: /products/category/product-name/p/product-name
  • Trailing slash normalisation: /about//about
  • Consolidating duplicate content: merging two similar pages into one — redirect the weaker to the stronger
  • Deleted or discontinued pages: redirect to the most relevant live page (not the homepage, unless nothing is relevant)
  • Protocol change: any HTTP URL on an HTTPS site

The homepage redirect deserves special attention. Your site should have exactly one canonical homepage URL. All of these should 301 to the same destination:

http://example.com         → https://example.com
http://www.example.com     → https://example.com
https://www.example.com    → https://example.com
https://example.com/       → https://example.com

That's four redirects (or fewer, depending on what your server handles) all pointing to one canonical URL. Without this, your homepage link equity is split across multiple versions.

When to use a 302

Use a 302 when the original URL will return:

  • A/B testing: you're temporarily directing users to an alternate version while testing; the original URL will return to normal after the test
  • Maintenance mode: /checkout/maintenance while your payment system is down; /checkout will return
  • Seasonal pages: a Black Friday sale page temporarily redirecting to a holding page; the sale URL returns next year
  • Login-gated content: redirecting unauthenticated users to the login page; the original URL is accessible after login

The critical mistake: using a 302 when you mean a 301. This happens when developers reach for whatever redirect is easiest to implement and don't consider SEO implications. A 302 tells Google "this URL will return" — so Google keeps the original URL in its index and may not pass PageRank to the destination. If the URL never actually returns, that PageRank is stranded indefinitely.

Redirect chains: the silent PageRank leak

A redirect chain is any sequence of more than one redirect to reach the final destination:

/old-page → /intermediate-page → /final-page

Chains form naturally over time:

  1. You rename /services to /our-services, adding a 301
  2. Later, you rename it to /what-we-do, adding another 301 from /our-services
  3. Now /services/our-services/what-we-do is a 2-hop chain

After a URL restructure, chains form everywhere. The fix is to always update the older redirect to point directly to the final destination:

/services → /what-we-do  (skip the intermediate hop)
/our-services → /what-we-do  (direct)

Audit redirect chains regularly, especially after site migrations. An audit tool will map the full chain for every redirect it encounters — chains of 3+ hops should be collapsed.

What about 307 and 308?

HTTP/1.1 introduced 307 (Temporary Redirect) and 308 (Permanent Redirect) as stricter versions:

  • 307: like 302, but the HTTP method is preserved (a POST redirects as a POST, not a GET)
  • 308: like 301, but the HTTP method is preserved

For SEO purposes, Google treats 301 and 308 equivalently (both permanent, both pass PageRank), and 302 and 307 equivalently (both temporary). You'll mostly encounter 301 and 302 in practice — 307 and 308 appear in specific API contexts where method preservation matters.

Implementing redirects

nginx

# 301 permanent redirect
server {
  return 301 https://example.com$request_uri;
}

# Specific URL redirect
location = /old-page {
  return 301 /new-page;
}

Apache (.htaccess)

# Redirect specific URL
Redirect 301 /old-page /new-page

# Redirect entire domain (HTTP to HTTPS)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Next.js (next.config.mjs)

export default {
  async redirects() {
    return [
      {
        source: '/old-page',
        destination: '/new-page',
        permanent: true,  // true = 308, false = 307 (Next.js uses 307/308)
      },
    ]
  },
}

Note: Next.js uses 308 (not 301) for permanent redirects and 307 (not 302) for temporary — both are equivalent for SEO.

Cloudflare (Page Rules or Redirect Rules)

In Cloudflare dashboard → Rules → Redirect Rules → Create Rule. Set the match condition (URL path or domain) and choose "301 Permanent Redirect" or "302 Temporary Redirect" as the response type. Cloudflare handles the redirect at the edge, before traffic hits your server.

WordPress

Use a plugin like Redirection (free) or Rank Math's redirect manager. Avoid adding redirects to .htaccess manually if you're using a managed WordPress host — many hosts handle .htaccess at the server level and may overwrite custom rules.

Redirects to avoid for SEO

Meta refresh

<meta http-equiv="refresh" content="0; url=/new-page">

A meta refresh redirect is executed in the browser, not the server. It's slower (the original page HTML loads first, then the redirect fires), less reliable for PageRank transfer, and can be flagged as deceptive if different content is shown to crawlers vs. users. Always replace meta refreshes with server-level 301 redirects.

JavaScript redirects

window.location.href = '/new-page'

JavaScript redirects only fire after the browser executes JavaScript. Googlebot's first crawl wave reads the raw HTML — a JavaScript redirect is invisible until the second crawl wave (which can be days later). Never use JavaScript redirects for SEO-important URLs. If a JavaScript redirect exists on a page, add a server-level 301 redirect as well.

Redirect to the homepage

When a page is deleted and has no obvious replacement, it's tempting to redirect it to the homepage. This is usually the wrong choice:

  • It dilutes the homepage with irrelevant equity
  • It's a soft signal to Google that the page's topic has no dedicated destination
  • If the deleted page had meaningful inbound links, those links now signal "homepage" not the original topic

Better: find the most topically relevant live page and redirect there. If nothing is relevant, return a clean 410 (Gone) instead — 410 signals intentional removal faster than 404.

How to audit your redirects

The DeepSEOAnalysis free audit checks all redirects encountered during the crawl:

  • Redirect chains — every sequence of 2+ hops is listed with the full chain mapped
  • Redirect loops — pages that redirect in a cycle
  • Redirects to 4xx or 5xx URLs — broken redirect targets
  • Internal links pointing to redirect sources — internal links should point to the final URL, not the redirect source
  • 302 redirects on URLs that appear to be permanent moves — flagged for review

Run an audit after any significant URL change, migration, or restructure to catch chain formation before it affects rankings.


Frequently asked questions

Does a 301 redirect hurt SEO?

A single 301 redirect from A to B passes close to full PageRank and is SEO-neutral. The SEO cost comes from redirect chains (multiple hops before reaching the destination) and from internal links that still point to the old URL — they add a hop to every internal link visit. Update internal links to point directly to the destination URL after implementing redirects.

How long does Google take to process a 301 redirect?

Google typically processes 301 redirects and updates its index within days to weeks, depending on how frequently the old URL was crawled. Pages that were crawled daily will be updated quickly; rarely-crawled pages may take longer. You can accelerate the process by submitting the new URL in Google Search Console → URL Inspection → Request Indexing.

Can I use a 302 redirect for a page I deleted?

You can, but it's the wrong tool. A 302 tells Google "this URL will return," so Google may keep the old URL in its index indefinitely and not pass equity to the destination. If the page is permanently gone and you have a relevant replacement, use a 301. If there's no relevant replacement, return a 410 (Gone) — it signals intentional removal more clearly than a 404.

What is a redirect chain and how do I fix it?

A redirect chain is when reaching a final URL requires following more than one redirect: A → B → C. Fix by updating every redirect that points to an intermediate URL (B) to point directly to the final URL (C). The DeepSEOAnalysis audit maps all redirect chains and lists every source URL so you can update them directly.

Run DeepSEOAnalysis on your own site.

Free, no signup. Technical SEO, Core Web Vitals, structured data, and AI visibility in one report.

Run a free audit →