Free Geo-Grid Audit — see exactly where you rank on Google Maps, block-by-block. Claim yours →

301 or 302 Redirect? The Right Answer in 30 Seconds

🌍250+ businesses · 17 countries 4.9★ · 140+ verified reviews 🏆WASME 2023 winner · New Delhi

8-min read · last updated 2 May 2026

Listen
LISTEN, DON'T READ
"90-second answer"
0:00
0:00

Kunal Singh Dabi holding up two cards. A glowing gold card with 301 in his left hand, a red card with 302 in his right hand. Slight knowing smile. Brand-coloured navy background with gold and red ambient glow.

TL;DR

Moving a page forever? Use 301. Just temporarily? Use 302. That single rule covers nine out of ten redirect decisions you’ll ever make. (The other one, for API endpoints where the request type can’t change mid-move, uses 307 or 308. Most people never touch those.)

Want to know what’s actually live on your site? There’s a one-line check that reveals the code your server is sending. If it says 302 and the move was supposed to be permanent, your rankings are slipping in real time. We’ll walk you through the check below, with no command-line knowledge needed.

Recovery takes 2 to 6 weeks once you fix the wrong code and ask Google to crawl the page again. Most of that wait is just Google’s bots coming back around on their own schedule.

Pick the version of this guide that matches you

You can also just scroll. Everything below is the full guide. The picker re-orders what's expanded for you. We don't track your pick.


It’s eleven at night. You’re three weeks into the migration, and organic traffic is down 40%. The dev team swears the redirects are fine. Search Console looks normal. But the line on your analytics chart keeps falling, and you keep refreshing it like the numbers might tell a different story.

Here’s the part nobody told you. There are two kinds of redirects, and they look identical to a human visitor. To Google, they’re worlds apart. One says: this page moved forever, so pass everything across. The other says: this page is just away for a bit, so keep the old one ranking. Use the wrong one during a migration, and search engines spend weeks confused about which version of your site to actually rank.

The fix is usually a single line of code. Finding the problem in the first place is the hard part.

This guide walks you through the whole thing. The simple rule for picking the right redirect (it really is just two questions). Ready-to-paste code for whatever your site runs on (WordPress, Shopify, Next.js, Apache, Nginx, the lot). The exact thing to check inside Google Search Console afterwards to prove the fix worked. And if someone else’s mistake landed in your lap, there’s a four-step recovery playbook waiting at the end.

One thing first. Don’t believe what your SEO dashboard says about redirects. Don’t believe what the developer says either. Check what your server is actually sending back, with your own eyes. Prove it for yourself. We’ll show you the easy way.

The 30-Second Answer

Moving a page forever? Use 301. Just away for a bit? Use 302. The only other case worth knowing is API endpoints, which need 307 (temporary) or 308 (permanent). Unless you’re a developer working with APIs, you’ll probably never run into those.

That one rule covers 90% of decisions. Why does the choice matter so much? Because the redirect code is doing two jobs at the same time. It’s telling search engines whether the move is permanent or temporary. And it’s quietly telling browsers whether the request type (the GET, POST, that kind of thing) needs to stay exactly the same on the way through. Most of us only ever need to think about the first job.

Underneath, every redirect works the same way. A visitor asks for the old URL. Your server sends back a short message saying: this page moved, here’s the new address. The number on that message (301, 302, 307, 308) is what tells search engines how to handle the move.

There’s a wrinkle worth knowing. Google quietly updated how it handles 302s back in 2016. They got more flexible about treating them as proper signals, but only when the redirect stays in place long enough and the new page actually matches the old one. So the SEO outcome (which URL ends up ranking, where your link equity flows) depends on more than just which number you picked. How long the redirect lives. How similar the content is. How often Google crawls. All of it factors in. We’ll walk through the evidence in a minute.

Status Meaning Cacheable? Method-safe? Link equity Use when
301 Moved Permanently Yes (long TTL) No (POST→GET allowed) Full to destination Permanent moves
302 Found (originally Moved Temporarily) No (default) No Stays with source URL Temporary substitutions
303 See Other No Forces GET Stays with source URL Post-form-submission
307 Temporary Redirect No Yes (strict) Stays with source URL Temporary, method-safe (API)
308 Permanent Redirect Yes Yes (strict) Full to destination Permanent, method-safe (API)
Decision tree. Top diamond asks 'Permanent move?'. Yes branches to 301, with 308 underneath labelled method-safe. No branches to 302, with 307 underneath labelled method-safe.
The decision rule, visualised. Permanent vs temporary, then method-safe vs not.

That table is the short answer. The rest of this guide unpacks what actually happens to your rankings, your crawl budget, and your indexed URLs when you pick one over the other. You’ll see ready-to-paste code for every major platform, and the proof, pulled from real crawl data and Google’s own documentation.

Definitions: 301, 302, 307, 308, and the Location Header

Here are the definitions you’ll bump into for the rest of this guide. Worth bookmarking. You’ll come back.

301 Moved Permanently: A response status code that tells the browser the resource has been permanently relocated to the URL given by the Location header. Search engines pass ranking signals to the new URL; browsers cache the redirect aggressively.

302 Found: A response status code that tells the browser the resource resides temporarily under a different URL given by the Location header. Search engines keep the original URL in the index; browsers don’t cache by default.

307 Temporary Redirect: Like 302 but with strict method preservation. The client has to repeat the request with the same method (POST stays POST). Use it when an API contract can’t change verbs.

308 Permanent Redirect: Like 301 but with strict method preservation. Permanent and method-safe.

Location header: The HTTP response header that carries the destination URL of any 3xx redirect.

HTTP 3xx redirect family map. 300 Multiple Choices (top, white). 301 Moved Permanently and 308 Permanent Redirect connected by a gold line as the permanent pair. 302 Found and 307 Temporary Redirect connected by a red line as the temporary pair. 303 See Other sits at the far left, dashed-linked to 302.
The 3xx family. Permanent pair 301↔308 (gold). Temporary pair 302↔307 (red). 303 sits apart for post-form-submission redirects.

What these mean in practice. Think of a 301 as moving house and forwarding all your post forever. A 302 is going on holiday and asking the post office to redirect for two weeks, then stop. The “method-safe” 307 and 308 specify exactly how the post should be handled. Don’t open it. Don’t reply for me. That’s the rule applications need so they keep working when you redirect their endpoints.

Spec lineage. The 301 status code traces back to HTTP/1.1, and RFC 9110 — HTTP Semantics is now the authoritative reference (§15.4.2). The 302 code has a messier story. HTTP/1.0 (1996) defined it as “Moved Temporarily,” but browsers immediately started changing POST requests to GET on redirect, behaviour the spec never authorised. RFC 2616 (1999) renamed 302 to “Found” and admitted the damage was already done.

The 1999 spec change that broke 302: RFC 2616 acknowledged that 302 had been implemented incorrectly across the web. Rather than try to fix billions of clients, the spec introduced 303 and 307 to give people a clean way out.

The 307 and 308 codes exist precisely because 302’s method-changing behaviour stuck around forever. When your API contract can’t tolerate verb changes (a POST that has to stay a POST), 307 (temporary) and 308 (permanent) lock the method down. For browser-facing redirects where the destination expects a GET anyway, 301 and 302 are still the standard.

See also the canonical URL guide for the related but distinct mechanism of <link rel=canonical>. For deeper implementation detail, MDN Web Docs on HTTP redirections has good browser-specific behaviour notes.

When to Use 301 vs 302: The Decision Rule

It comes down to one question: is the move permanent, or just temporary? The cases below tell you which side you’re on.

Use 301 when…

You’re moving to a new domain forever. When oldbrand.com becomes newbrand.com and there’s no chance of going back, use a 301. It tells search engines: pass everything you know about the old domain across to the new one, and drop the old one from your index.

You’re moving from HTTP to HTTPS. Every page on your site is moving from the insecure version (the one without the padlock in the browser) to the secure one. That’s permanent. A 301 makes sure browsers and search engines treat HTTPS as the official version from now on.

You’re restructuring your URLs. When /blog/post-1 becomes /posts/post-1 as part of a sitewide reshuffle, you don’t want the old path to ever come back. A 301 hands all the rank power over to the new structure.

You’re merging or trimming pages. When you combine two short pages into one stronger one, redirect the old URL permanently. The merged page picks up the rank power of both.

You’re sending a deleted page to its parent category. Rather than showing a “page not found” for a discontinued product, redirect to the parent category page. Users land somewhere useful, and the rank power flows to a relevant page instead of vanishing.

You’re picking a winner between slash and no-slash. Pick either /page or /page/ and redirect the other one permanently. Consistency stops Google from treating them as two separate pages.

You’re picking a winner between www and non-www. Choose www.domain.com or domain.com as your main version. Redirect the other one with a 301 so search engines pile all their signals onto one.

An ecommerce migration (Shopify to WooCommerce, a custom storefront to Shopify Plus) is one of the biggest 301-redirect jobs a brand will ever run. The full migration playbook, including the redirect map you build before any URL change goes live, lives inside the Revenue Funnel SEO methodology.

Use 302 when…

You’re running an A/B test. If half your traffic is going to a variant page, neither version should take over as the main URL during the experiment. A 302 tells search engines: the original URL is still in charge while we collect data.

You’re in a maintenance window. If you’re sending visitors to a status page during scheduled downtime, that’s temporary by definition. A 302 keeps the original URL’s standing in Google intact so rankings don’t shift while you fix things.

You haven’t set up country tags yet. Sending Indian visitors to /in/ and US visitors to /us/? If you haven’t added hreflang yet, use 302. (Hreflang is the tag that tells Google which version to show in which country.) It stops Google picking the wrong regional version as the main URL.

You’re running a promo page that disappears. A Black Friday page that vanishes after 1 December shouldn’t absorb your main page’s ranking power. A 302 keeps the original URL as the main one, and the promo page only exists for the campaign.

You’re using a placeholder page during a rebuild. When you redesign a section of your site, redirecting temporarily to a placeholder keeps the original URL’s standing intact. Once the rebuild goes live, you remove the redirect and the original URL takes over again.

Edge cases the rules don’t quite settle

Redirects after a shopping cart checkout should technically use a 303 (it tells the browser: forget the form data, just fetch this page). Most platforms send 302 instead, and browsers treat it the same way. API moves where clients send POST data should really use 308 to lock the request type. Most teams reach for 301 instead. It’s worked for a decade and nothing has broken yet. Login redirects usually use 302. The visitor bounces to the login page, then comes back once they’ve signed in.

What Happens to Your SEO After You Choose (2026 Reality)

Picking the right code isn’t just a technical box-tick. It quietly decides three things at once. Whether Google passes the rank power across to your new URL. Whether your new URL replaces the old one in search results. And whether AI search engines like ChatGPT bother citing you at all. Each one feeds the next, and undoing the damage later takes more effort than getting it right the first time.

Link equity is the SEO “reputation” your URLs build up over time. Other sites linking to you, content you’ve published, the way real users behave on the page. All of it adds up to a score that helps the URL rank.

When you redirect with a 301 (permanent), Google moves the reputation to the new URL. The new URL inherits the rank-power.

When you redirect with a 302 (temporary), Google keeps the reputation on the old URL. The new URL gets treated as a side address that never builds its own authority. So if you accidentally use 302 for a permanent move, you end up with two URLs in Google’s eyes. Neither one strong enough to rank on its own. Your rank-power is split forever, until you fix the code.

This is the most expensive single mistake in technical SEO.

For years, SEOs assumed 302s killed link equity. They treated temporary redirects as equity black holes. PageRank stopping at the source URL and never reaching the destination.

John Mueller of Google cleared that up in 2016, and he’s repeated it in Search Central Office Hours since. Both 301 and 302 redirects pass link equity. The Google Search Central documentation on URL redirects confirms it. Mueller’s repeated phrasing: “It’s been like this for years now.”

Equity passes either way. What changes is where it ends up.

A 302 keeps the old URL as the canonical. Google goes on treating the old URL as the boss, so the new URL never builds up its own ranking signals. Even though equity is technically flowing through the redirect. The practical result: with a 301, the new URL inherits page-level metrics and becomes the ranking entity. With a 302, equity splits across two URLs with no clear winner. Neither one builds the concentrated authority you need to compete for hard queries.

Link equity is the topical hinge between redirect literacy and off-page SEO. The Earned Authority Method is the framework that builds it in the first place. And it’s exactly why preserving it through correct 301 use matters more than most operators realise.

The split matters most during migrations. A site that goes from HTTP to HTTPS with 302s doesn’t lose equity. It just fragments it across protocol variants forever.

What Google’s index does with each one

Googlebot is Google’s crawler. It treats 301s and 302s very differently when storing pages in its index. (The index is the giant database of every page Google knows about.)

A 301 tells Google: swap the old URL for the new one. Over the next few visits Google does exactly that. Usually within 2 to 6 weeks for a typical site, faster for big sites Google checks more often. The new URL becomes the one Google shows in search results. The old one quietly drops out.

A 302 tells Google: keep the old URL. Google goes on showing the old URL as the main one in search results. The new URL might get visited, but it never takes over. Google reads the redirect as a short-term detour, not a permanent change of address.

Google Search Console (Google’s free tool for site owners) has a feature called URL Inspection that makes this easy to see for yourself. A URL with a 301 eventually shows “URL is not on Google” with the reason “Page with redirect”, and the new URL shows up as indexed. A URL with a 302 hangs onto the original as the main URL with a “Page with redirect” tag. And the new URL just sits there, never picked up.

For migrations, that means 302s create a permanent split between two URLs unless you go back and fix the code.

AI search and redirects: the 2025 ChatGPT data

A December 2025 study from SE Ranking found something striking. AI search engines (ChatGPT, Perplexity, Google’s AI Overviews) cite redirected URLs much less often than regular Google does.

The numbers tell the story. Only 0.79% of ChatGPT citations point to URLs that go through a redirect, compared to 5.75% in regular Google results. That means ChatGPT cites redirected URLs 3 to 7 times less often than Google does.

Here’s the surprising bit. When ChatGPT does follow a redirect, it strongly prefers permanent ones. The same study found ChatGPT follows 301s 1.6 times more often than 302s. Perplexity and Bing’s AI features show the same pattern. AI search systems treat permanent redirects as more trustworthy than temporary ones.

What that means for your migration: a 302 hidden anywhere in your redirects quietly cuts your chances of being cited by AI search. You lose on two fronts at once. Google’s regular search treats your URLs as fragmented, and the new wave of AI search engines stops mentioning you in their answers.

If your wrong code makes ChatGPT stop citing your content, your paid search has to pick up the slack. The Pincer Method is exactly why we run paid and organic from one playbook. When AI search drops a channel, the other one has to catch the demand.

Copy-Paste Code for 7 Platforms

Search Google for “301 vs 302 redirect” and the top results name seven platforms but never actually show you the code to use. So here it is. Every snippet below is ready to copy and paste, checked against current platform documentation, and tested for the most common mistakes.

Apache (.htaccess)

On Apache, this goes in your .htaccess file in the document root.

Show Apache .htaccess code
# Single URL 301
Redirect 301 /old-url /new-url

# Pattern-based 301 (regex)
RedirectMatch 301 ^/old/(.*)$ /new/$1

# Domain change with HTTPS
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldbrand\.com$ [NC]
RewriteRule ^(.*)$ https://newbrand.com/$1 [R=301,L]

Gotcha: forgetting RewriteEngine On before you use RewriteRule. The directive silently fails without it, and you’ll spend twenty minutes wondering why nothing’s working. We cover the comparison in detail in htaccess vs Nginx for redirect rules.

Nginx

On Nginx, this goes in your server block configuration file (usually /etc/nginx/sites-available/yourdomain).

Show Nginx config code
# Single URL 301
location = /old-url {
    return 301 /new-url;
}

# Domain change
server {
    listen 443 ssl;
    server_name oldbrand.com;
    return 301 https://newbrand.com$request_uri;
}

Gotcha: using rewrite when return would be faster. return 301 runs before regex evaluation and saves the server some work. The full breakdown lives in htaccess vs Nginx for redirect rules.

Cloudflare Workers + Page Rules

Page Rules (UI, no code): Cloudflare dashboard → Rules → Page Rules → “Forwarding URL” → pick 301 or 302 from the dropdown. Free plans cap at 3 active Page Rules, which fills up fast on sites with multiple redirect needs.

Workers (code, more flexible):

Show Cloudflare Workers code
export default {
  fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === '/old-url') {
      return Response.redirect('https://example.com/new-url', 301);
    }
    return fetch(request);
  }
}

Gotcha: Workers cost $5/month for 10M requests, but they give you pattern-matching power Page Rules just can’t match. We’ll cover advanced use cases in Cloudflare Workers redirect patterns.

WordPress: RankMath PRO + Redirection plugin + manual .htaccess

RankMath PRO: WordPress Admin → Rank Math → Redirections → Add New. Pick 301 or 302 from the dropdown, drop in the source and destination URLs. Changes go live immediately, no server restart.

Redirection plugin (free, John Godley): Tools → Redirection. Best for high-volume migrations. Supports CSV import/export, regex patterns, and 404 tracking. The plugin logs redirect hits, which helps you spot chains or loops before they compound.

Manual .htaccess: Works, but it doesn’t survive plugin or theme updates that touch .htaccess. Use it only for permanent system-level rules that need to stick around regardless of WordPress state.

If you’re WordPress-native and treating each redirect change as part of the larger content engine, the redirect step is just one move inside the broader methodology. The Content Compounder methodology is what runs that engine. The six-pillar feedback loop that consumes redirect literacy as Pillar 2 plumbing. For plugin-specific comparisons, the WordPress redirect plugin guide goes deep on selection criteria.

WooCommerce + Shopify

WooCommerce: Uses the WordPress redirect tools above. Bulk product-URL migration needs deduplication logic, though. A 500-SKU store can generate 500 redirect rules that slow down .htaccess parsing. We cover the deduplication workflow in the common-mistakes section below.

Shopify: Online Store → Navigation → URL Redirects. Shopify only supports 301 through the standard admin. You can’t configure 302 without a custom Shopify Function or a third-party app like Easy Redirects.

Gotcha: Shopify URL Redirects survive theme changes, but they break the moment you delete the source product or page. Always export your redirect list before any structural change. Settings → Files won’t save you here.

Next.js (next.config.js)

On Next.js, this goes in your next.config.js file at the project root.

Show Next.js redirects config
// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/old-url',
        destination: '/new-url',
        permanent: true, // permanent: true = 308; permanent: false = 307
      },
    ];
  },
};

Gotcha: Next.js uses 307/308 by default (the strict-method variants), not 301/302. If you specifically need 301/302 because some legacy SEO tool doesn’t recognise 308 yet, set statusCode: 301 instead of permanent: true.

Express middleware

On Express, this goes in your main server file (usually app.js or server.js).

Show Express middleware code
// Express
app.get('/old-url', (req, res) => {
  res.redirect(301, '/new-url');
});

// Pattern-based redirect
app.use('/old-section/*', (req, res) => {
  const newPath = req.originalUrl.replace('/old-section', '/new-section');
  res.redirect(301, newPath);
});

Gotcha: res.redirect() defaults to 302 if you don’t pass a status code. Always be explicit. Implicit 302s are the single most common cause of “I set up redirects but my rankings dropped” support tickets we see.

Vercel (vercel.json or next.config.js)

On Vercel, redirects live in vercel.json at the project root, or inside next.config.js if you’re using Next.js (covered above).

Show Vercel vercel.json code
{
  "redirects": [
    {
      "source": "/old-url",
      "destination": "/new-url",
      "permanent": true
    },
    {
      "source": "/old/:path*",
      "destination": "/new/:path*",
      "permanent": true
    }
  ]
}

Gotcha: same as Next.js. permanent: true means 308, permanent: false means 307. If you specifically need 301/302 status codes, use "statusCode": 301 instead of "permanent".

Netlify (_redirects file)

On Netlify, redirects go in a _redirects file in your publish directory (or public/).

Show Netlify _redirects code
# Single URL 301
/old-url    /new-url    301

# Wildcard
/old/*    /new/:splat    301

# Domain change (full URL on the right)
https://oldbrand.com/*    https://newbrand.com/:splat    301!

Gotcha: the trailing ! (force flag) makes the redirect override existing files at the destination. Without it, Netlify only redirects when the source doesn’t match an actual file. Useful, but easy to forget.

AWS CloudFront (Functions or Lambda@Edge)

On CloudFront, redirects can run as a CloudFront Function (cheaper, simpler) or Lambda@Edge (more powerful, costs more). For most redirect work, Functions is the right call.

Show CloudFront Function code
function handler(event) {
  var request = event.request;
  if (request.uri === '/old-url') {
    return {
      statusCode: 301,
      statusDescription: 'Moved Permanently',
      headers: {
        location: { value: 'https://example.com/new-url' }
      }
    };
  }
  return request;
}

Attach the function to a CloudFront distribution behaviour with the viewer-request event type. CloudFront Functions are limited to 10ms execution and have no network access, but they’re free for the first 10M invocations per month.

Caddy

On Caddy, redirects go in your Caddyfile and are dead simple.

Show Caddyfile code
# Single URL 301
oldbrand.com {
    redir /old-url /new-url permanent
}

# Domain change with HTTPS preserved
oldbrand.com {
    redir https://newbrand.com{uri} 301
}

Gotcha: permanent in Caddy is 301. Use temporary for 302. Caddy auto-handles HTTPS via Let’s Encrypt, so domain redirects are usually a one-line affair.

IIS (Windows Server, web.config)

On IIS, redirects live in your site’s web.config file under the <system.webServer> section. Requires the URL Rewrite module (free Microsoft download).

Show IIS web.config code
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Old URL 301" stopProcessing="true">
          <match url="^old-url$" />
          <action type="Redirect" url="/new-url" redirectType="Permanent" />
        </rule>
        <rule name="Domain change" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^oldbrand\.com$" />
          </conditions>
          <action type="Redirect" url="https://newbrand.com/{R:0}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Gotcha: redirectType="Permanent" is 301 in IIS. Use Found for 302, SeeOther for 303, Temporary for 307. The naming is non-obvious. Many devs assume Temporary is 302 and ship the wrong code.


Mid-migration and need a second pair of eyes? Send us your sitemap and your .htaccess. We’ll do a free 30-minute audit on a call. Your screen, our voice, real curl output. No deck. No proposal. Retainers from ₹40,000 / $499 monthly when you want us to take over the work.

Book a 30-min strategy call → · WhatsApp +91 96366 50036


How to Verify: Don’t Believe It. Prove It.

There are three ways to check what a redirect is actually doing. The first one needs no special tools. The second uses a free feature already built into Chrome. The third uses Google’s own free dashboard. Pick whichever you’re most comfortable with. They all tell you the truth.

curl -I, the one-line check (for developers)

If you’re not a developer, skip ahead to the Browser DevTools or Google Search Console method below. They show you the same information without the command line.

On any computer with a terminal (the black-and-white text window developers use), run:

curl -I https://example.com/old-url

Sample output:

HTTP/2 301
date: Tue, 1 May 2026 09:00:00 GMT
location: https://example.com/new-url
cache-control: max-age=31536000
Stylised terminal window showing the curl -I command and its output. <abbr class=HTTP/2 301 line glows in gold, location header points to the new URL, cache-control max-age value is highlighted. Brand palette navy and gold." loading="lazy" width="1600" height="900">
The screenshot you forward to your client. Read the response. Don't trust the dashboard.

The first line tells you the status. 301 here. The location: header tells you where the redirect points: your new URL, exactly as you specified. The cache-control: max-age=31536000 (one year in seconds) tells you the redirect is being cached aggressively, which is consistent with a permanent redirect. Browsers and CDNs will respect this directive and skip the lookup on repeat visits.

Gotcha: some servers return HTTP/1.1 instead of HTTP/2. The status line reads HTTP/1.1 301 Moved Permanently instead of the terser HTTP/2 301. The behaviour is identical. The version number just reflects what your server supports, not whether the redirect’s valid.

Browser DevTools Network tab

Open Chrome DevTools → Network tab → tick “Preserve log” → load the OLD URL directly in the address bar.

The first request shows status 301 or 302 in the Status column. Click that row to inspect the Location header and the full response headers in the right panel.

This method is great for spotting redirect chains visually. Each hop shows up as a separate row. If you see three rows before the final 200, you’ve got a chain to collapse.

GSC URL Inspection, the post-deploy check

Google Search Console → URL Inspection → paste the OLD URL.

For a successful 301, you’ll see “URL is not on Google” with the reason “Page with redirect”. That confirms Google has crawled the redirect, registered it, and started passing authority to the destination.

After two to six weeks, paste the NEW URL. What you want to see: “URL is on Google” with “Page is indexed” and “User-declared canonical”. That confirms the consolidation has finished. The new URL is now holding the authority the old URL built up.

For the full URL Inspection feature reference, see Google’s URL Inspection documentation.

This is the screenshot you forward to your client to prove the migration worked. Not a Semrush export. Not a paid tool report. Google’s own console saying the URL is on Google. Don’t believe the dashboard. Read the response.

If You Already Used the Wrong Code: Recovery Playbook

Recovery is four small steps. Find the broken URLs. Fix the code. Ask Google to come back. Wait. Most of the time you spend on it is just waiting. The actual fix is fast. The full job usually takes 2 to 6 weeks, and rushing any single step just makes the wait longer.

What this looks like in practice. Last quarter we helped a skincare brand who had just moved their store from Shopify to WooCommerce. Their developers had used 302s on every URL because the migration plugin defaulted to “temporary” without warning anyone. By week 4, organic traffic was down 38%. We checked 60 product pages, confirmed every redirect was the wrong type, and switched them all to 301. Then we resubmitted their sitemap and asked Google to recrawl the 12 highest-revenue pages. Eighteen days later, the new URLs were showing as the main version, and traffic was back within 4% of pre-migration baseline.

Symptoms

Rankings dropped 2 to 6 weeks after your migration, and the timing matches up too neatly to be a coincidence. Google Search Console flags “Page with redirect” for URLs that should already be the new main version by now. Google is still treating the old URL as the primary one. AI search makes it worse: ChatGPT, Claude, and Gemini keep sending people to the old URLs because their training data caught the temporary redirect signal. Your new URLs show up with little or no presence in Google even though Google accepted your sitemap without complaint. Direct traffic to old URLs jumps around unpredictably as browsers and bookmarks remember the old address, sending visitors into redirect loops or to stale pages.

Diagnose

Pick 20 to 50 of your old URLs and check what the server is actually sending back. (If you’re a developer, use curl -I. Otherwise, open the URL in Chrome with DevTools on the Network tab.) Write down the real status code, not what your CMS says it’s sending. Then run those same URLs through Google Search Console’s URL Inspection tool. The mismatches are where the leak is. Look at your platform settings or server config to find the root cause. Three common culprits: a redirect plugin set to “temporary” by default, an Express call without an explicit status code, or a Next.js redirect with permanent: false. Note any chains separately. A chain like A→B→C→D piles a second problem on top of the wrong-code one.

Fix

Switch every relevant setting to 301 (or 308 if you need to lock the request type for an API) and push the change live. Check every fix the same way you found the problem in the first place, confirming 301 shows up. Resubmit your sitemap to Google Search Console so Google knows something has changed. Use GSC’s URL Inspection tool and click “Request Indexing” on your most important destination URLs. Prioritise the pages driving revenue or backlinks. For very high-traffic redirects, you can speed Google up by temporarily linking to the new URL from your home page. That internal link nudges Google to come back and check sooner.

Re-index

The typical wait is 2 to 6 weeks for the new URL to take over as the main one. Faster on bigger sites Google visits often. AI search recovery varies. ChatGPT and Gemini start citing the right URL once their training cycles refresh. Perplexity and Bing’s chat usually catch up within 1 to 2 weeks once the new URL is stable. For specific benchmarks on how long does a 301 redirect take Google to process, we’ll publish detailed crawl-timing data in a future post.


Inherited a redirect mess and not sure where the bleed is? Paste your sitemap into a free 5-minute audit and we’ll send back a list of every 301, 302, and chain in your redirect graph, plus the ones that are losing you indexation right now. Most clients call us at week 3 of an unexplained traffic drop. Save 2 weeks.

Send your sitemap on WhatsApp →


7 Mistakes That Quietly Cost Rankings

These are the seven mistakes we see in nearly every audit. Each one comes with a quick way to spot it and a quick way to fix it.

What this looks like in practice. Last year we audited a software company getting ready to raise their first big investment round. Over six years of product changes, their server config had built up 4,200 redirect rules. Forty-one formed chains four-or-more hops long. Six were live loops, sending the server in circles. We collapsed every chain into single-hop redirects, killed the loops, and trimmed the total down to 1,180. Pages started loading 340ms faster. Two weeks later, Google was crawling more of their site again.

  1. Redirect chains (A goes to B, B goes to C, C goes to D). You can spot one by following the full chain through each step. Each hop loses a small amount of rank power and adds a delay. Fix by sending A directly to D. The redirect chain debugging guide covers the full step-by-step process.

  2. Redirect loops. The server returns errors or your browser times out after the redirect bounces around in circles. Fix by removing the rule that points back to an earlier URL in the chain.

  3. Mixed 301s and 302s across one migration. Some pages got the permanent code, others got the temporary one, and Google sees an inconsistent picture. Fix by checking every URL on your sitemap and switching every rule to 301.

  4. Forgetting that /page and /page/ are different URLs. With or without the trailing slash, Google treats them as two separate pages. Both have to redirect to the same one, or you split your rank power between two versions.

  5. Forgetting the http:// and www. variants. Every URL has four versions: with and without https, with and without www. Three of them have to 301 to one main version. Leaving any of them out fragments your authority across multiple addresses.

Variation-URL explosion is a related WC-specific failure mode. Five attributes with eight values each can spawn 40,000 indexable URLs from a single product. WooCommerce-specific technical SEO covers the variation-URL deduplication pattern that sits in the WC Tower’s Floor 3.

  1. Empty pages after a redirect. The destination URL works, but the page is short or basically empty. Google treats this as a “soft 404” (a page that technically loads but acts like a missing one) and quietly drops it. Fix by making sure the destination has real, useful content on it. The soft 404 recovery playbook covers exactly how much content is enough.

  2. Auto-redirecting people based on their country. Sending visitors to a different page based on where they’re browsing from, with no way to opt out, breaks Google’s rules. Fix per the Multi-Region Authority Stack Layer 1, which lays out the right way to route people by region.

Geo-IP auto-redirect without manual override is a cloaking-risk pattern Google’s spam team flags. For multi-region routing done correctly (hreflang, ccTLD architecture, and the Layer 1 Geo-IP rules that don’t 302 silently), see the Multi-Region Authority Stack.

Frequently Asked Questions

What is the difference between a 301 and 302 redirect?

A 301 signals permanent relocation. Google replaces the old URL with the new one as the canonical. A 302 signals temporary relocation. Google keeps the original URL as the canonical. Both pass link equity per Google’s documentation, but the indexation behaviour is completely different. Use 301 when the move is permanent. Use 302 when you’re going to revert.

Does a 302 redirect hurt SEO?

Yes. When you use it incorrectly. Using 302 for a permanent move means Google keeps the source URL as canonical indefinitely, so the destination URL never builds up its own ranking signals. Equity passes either way (Mueller confirmed that in 2016) but it splits across both URLs instead of consolidating on the new one. The result: neither URL builds the authority you need to rank for hard queries. The fix is to switch to 301, resubmit the sitemap, and request indexing.

Yes. John Mueller of Google confirmed that both 301 and 302 redirects pass link equity. The catch: with a 302, the destination URL doesn’t become canonical, so equity stays distributed across both URLs instead of consolidating. Your link signals stay split until you either switch to 301 or remove the redirect entirely.

When should I use a 302 redirect instead of a 301?

Use 302 for explicitly temporary scenarios. A/B tests where you’ll revert. Maintenance windows of hours or days. Promo pages that expire after a campaign. Locale-specific temporary serving during geo-testing. The criterion: you actually intend to restore the original URL within a reasonable timeframe.

How long does Google take to honour a 301 redirect?

Usually 2 to 6 weeks for the new canonical to fully replace the old in Google’s index. High-authority sites with active crawl budgets see faster processing. Low-authority sites can take 8 to 12 weeks for the consolidation to complete. Track progress with GSC’s URL Inspection tool. The question how long does a 301 redirect take Google depends mostly on how often Google crawls your site.

Can I change a 302 to a 301 later? Will my rankings recover?

Yes. Update your server config from 302 to 301, resubmit your sitemap in Google Search Console, and request indexing for the affected URLs. Rankings usually recover within 2 to 6 weeks as Google reprocesses the redirect and consolidates signals to the destination URL. The sooner you fix the mistake, the faster recovery happens.

What is the difference between 301 and 308? Between 302 and 307?

308 is strict permanent (method-safe). It forbids clients from changing the HTTP method during the redirect. 307 is strict temporary (method-safe) with the same method preservation. 301 and 302 historically allowed clients to change POST requests to GET requests. Use 307 and 308 for API endpoints where preserving the original request method is critical.

How do I redirect a URL in WordPress?

Three options. RankMath PRO’s redirect manager has the cleanest interface and automatic 404 detection. The free Redirection plugin offers similar functionality without the premium cost. Manual .htaccess editing gives you maximum control but needs server access. For the broader WordPress technical-SEO methodology, see our WordPress SEO playbook.

How do I check if a redirect is working correctly?

Run curl -I [old-url] in your terminal to see the status code and Location header your server is actually returning. Browser DevTools’ Network tab shows the same information with visual chain rendering. Google Search Console’s URL Inspection tool tells you how Google itself reads the redirect.

Will a 301 redirect chain hurt my SEO?

Yes. Each hop loses a small fraction of link equity and adds latency. Google may stop following chains after roughly 5 hops, leaving equity stranded along the way. Audit your redirects every quarter and collapse chains down to single-hop. Screaming Frog spots chains automatically.

Do AI search engines (ChatGPT, Claude, Gemini) treat redirects differently than Google?

Yes. ChatGPT cites redirected URLs 3 to 7 times less often than Google does, per SE Ranking’s December 2025 study. AI systems prefer stable, non-redirected URLs when picking sources. If AI traffic matters to your strategy, prioritise 301 over 302 and eliminate redirect chains in your high-value content.

How long should I keep a 301 redirect in place?

At least 12 months, ideally permanently. Once Google has consolidated signals to the new URL, you might think the redirect is no longer needed. It is. Keep it. Other sites linking to the old URL still send users (and bots) through the redirect for years. Remove it and those links 404. Reasonable rule of thumb: keep 301s in place forever unless the destination URL itself is being deprecated.

How do I redirect query-string parameters like ?utm_source=X?

Two options. Preserve them: most platforms pass query strings through automatically (Apache RewriteRule, Nginx $request_uri, Cloudflare Workers request.url). Strip them: explicitly redirect to the destination without query (e.g. Apache RewriteRule ^old$ /new? [R=301,L], where the trailing ? clears the query). Default to preserving unless you have a specific reason (analytics hygiene, canonical cleanup) to drop them.

Do redirects affect Core Web Vitals or page speed?

Yes. Each redirect hop adds 100-400ms of latency depending on DNS, TLS handshake, and server response time. A single redirect is rarely a CWV concern. A chain of 3+ redirects on a critical-path resource can push LCP past 2.5 seconds and tank your CWV. Always collapse chains and host redirects at the edge (Cloudflare Workers, CloudFront Functions) for the fastest response.

What’s the difference between a hard 301 and a soft 301?

There’s no “soft 301” in the HTTP spec. The term sometimes appears in SEO writing to describe a JavaScript-based or meta-refresh redirect. Those aren’t real 301s. They’re client-side hacks. A hard (real) 301 is an HTTP-level response with status code 301 returned by the server. A “soft 301” (JS or meta-refresh) doesn’t pass equity reliably, isn’t honoured by all crawlers, and adds latency. Always use a real HTTP-level 301.

Can I redirect to an external domain?

Yes. The redirect mechanism is identical. Location header points to the external URL, status code is whatever you choose. The SEO consequences are the same too: a 301 to an external domain transfers ranking signals to that domain, a 302 keeps signals on yours. Use external 301 redirects sparingly. You’re handing equity to someone else’s site. Common legitimate use: redirecting after acquisitions, partner-site referrals, or shutting down a brand.

How do I fix a redirect loop?

Run curl -L -I [url]. The -L flag follows redirects, -I shows headers. If the trace bounces between two or more URLs, you have a loop. Common causes: A→B redirect plus a B→A canonical tag, conflicting .htaccess rules, or a CDN-level redirect fighting an origin-server redirect. Fix by identifying the offending rule (usually the most recently added) and removing it. After the fix, validate with curl -L -I again. Successful resolution shows a single 200 at the end of the trace.


Mid-migration? Here’s the offer.

Send us your sitemap and your .htaccess. We’ll spend 30 minutes on a call. Your screen plus ours. We’ll run curl on five of your URLs live, look at your redirect graph in GSC, and tell you which fix saves the most ranking equity. No deck, no proposal, no follow-up sales sequence.

Book a 30-min strategy call → · WhatsApp +91 96366 50036

Want to see pricing first? The published Pricing Index shows every retainer tier in INR, USD, GBP, EUR, AUD. No discovery-call multiplier.

Want the master methodology? See the Prove-It Protocol. Ship → Measure → Prove → Iterate.


About the author

Kunal Singh Dabi is the founder of KD Digital. Recognised as Best SEO Specialist in India for MSMEs at the WASME World MSME Business Summit 2023 in New Delhi. 250+ businesses scaled across 17+ countries since May 2021. 4.9★ across 140+ verified reviews. Builder of the parent SEO consulting practice that ships every change with a Monday Report.