Here’s a question I get from clients almost every week: “We moved a page. Does it matter whether the redirect is a 301 or a 302?”
Yes, it matters. Not because Google punishes the wrong one, but because the redirect type tells Google which URL you want people to see in search results. Choose wrong, and Google may keep showing an old address for months, or treat a short-term change as permanent.
Let’s settle it.
The short verdict
Use a 301 when a page has moved permanently. Use a 302 when the move is temporary and the original URL will come back.
A 301 tells Google to show the new URL in search results. A 302 tells Google to keep showing the original URL. If you’re not sure, ask yourself: “Will the old URL ever be used again?” If the answer is no, it’s a 301.
What is a 301 redirect?
A 301 Moved Permanently response tells browsers and search engines that the content now lives at a new URL for good. Browsers remember it, and Google treats it as a strong signal that the new URL should be the one it indexes and shows (Google Search Central).
Typical uses:
- Changing a page’s slug or URL structure
- Merging two overlapping pages into one
- Moving from HTTP to HTTPS, or from www to non-www
- Migrating to a new domain
- Retiring a page that has a clear replacement
What is a 302 status code?
The 302 status code tells the browser the content is temporarily available at a different URL, but the original address is still the “real” one. Google treats 302s as a weak signal: the original URL usually stays in search results.
Typical uses:
- A page is under maintenance and you’re sending people to a temporary version
- A seasonal promotion page temporarily replaces a regular page
- A/B testing an alternate page (the original should stay indexed)
- Sending visitors to a location- or language-specific page while keeping one main URL
- Sending people to a login page before they can see a members’ area
Why is it called “302 Found”?
The official name of HTTP 302 is “Found” (in HTTP/1.0 it was “Moved Temporarily”). The name is a bit confusing, but it simply means: “I found what you want, but it’s over there for now.” The browser follows the Location header to the temporary URL automatically, so visitors rarely notice.
Is a 302 an error?
No. People search for “302 error” because they see code 302 in a browser’s developer tools, a crawler report or Search Console and assume something broke. A 302 is a normal redirect, not an error. It only becomes a problem when:
- It’s used for a move that’s actually permanent
- It’s part of a redirect chain or loop
- It points to a page that doesn’t exist (see our 404 error guide)
301 vs 302 vs 303 vs 307 vs 308: the full comparison
There are actually five redirect status codes worth knowing, plus two non-HTTP methods. Here they are side by side.
“`html| Redirect | Permanent or temporary? | Can the request method change (POST → GET)? | How Google treats it | Best for |
| 301 Moved Permanently | Permanent | Yes (browsers often switch POST to GET) | Strong signal: new URL shown | Most permanent page moves |
| 302 Found | Temporary | Yes | Weak signal: original URL kept | Short-term moves |
| 303 See Other | Temporary | Always becomes GET | Weak signal | Sending users to a results page after a form submission |
| 307 Temporary Redirect | Temporary | No, method and body stay the same | Weak signal | Temporary moves for forms and APIs |
| 308 Permanent Redirect | Permanent | No, method and body stay the same | Strong signal | Permanent moves for forms and APIs |
| Meta refresh (instant) | Treated as permanent | n/a | Treated like a permanent redirect | When you can’t change the server |
| JavaScript redirect | Depends | n/a | Only seen if Google renders the page | Last resort |
Sources: MDN redirections in HTTP and Google Search Central.
The method part, in plain English: 301 and 302 date from the early web, and browsers historically changed a form submission (POST) into a normal page load (GET) when following them. 307 and 308 were added later to guarantee that a form submission stays a form submission. For ordinary web pages, this doesn’t matter much. For APIs, checkout flows and forms, use 307 or 308. If you’re building a web application, our web application development team handles this as standard.
How Google handles redirects
Here’s what Google’s documentation says, distilled into what you actually need to know:
- Server-side redirects are best. A 301 or 302 sent by your server is the most reliable method. An instant meta refresh is the next option. JavaScript redirects should be a last resort, because Google only sees them after rendering the page.
- Permanent redirects transfer the “canonical” choice. With a 301 or 308, Google usually swaps the old URL for the new one in search results.
- Temporary redirects keep the old URL. With a 302, 303 or 307, Google usually keeps the source URL in results.
- Google follows up to 10 hops. After that, it stops and reports a redirect error. Each extra hop also slows visitors down.
- Google won’t fix the wrong code for you. Google’s documentation describes temporary redirects as a weak signal. If your move is permanent, don’t leave it to Google to work that out from a 302; send the code that matches what you mean.
Which redirect should I use? 12 real scenarios
| Situation | Use | Why |
| You changed a blog post URL | 301 | The old URL isn’t coming back |
| You merged two similar service pages | 301 from the weaker page to the stronger one | Consolidates signals into one URL |
| You moved your site to HTTPS | 301 (site-wide) | Permanent change |
| You moved to a new domain | 301 page to page | Permanent; map every URL, not just the homepage |
| You deleted a product with a direct replacement | 301 to the replacement | Same user need |
| You deleted a product with no replacement | 404 or 410, not a redirect | Avoid irrelevant redirects |
| A page is down for a few days of maintenance | 302 (or a 503 if the whole site is down) | The original URL is coming back; see our 503 guide |
| Black Friday page temporarily replaces /sale/ | 302 | /sale/ returns after the promotion |
| Members-only page sends guests to login | 302 or 303 | Temporary, per-visit redirect |
| A form submits, then shows a thank-you page | 303 | Prevents a resubmit on refresh |
| An API endpoint moves permanently | 308 | Keeps POST requests intact |
| An API endpoint moves for a short time | 307 | Temporary, keeps the method |
7 redirect mistakes that quietly hurt rankings
1. Using a 302 for a permanent move
Some plugins and hosting panels default to 302. If you’ve moved a page for good, check the type. A 302 left in place keeps the old URL in search longer and splits signals between two addresses.
2. Redirect chains
/page-a/ → /page-b/ → /page-c/ happens naturally over years of changes. Each hop adds delay, and after 10, Google stops. Fix: point every old URL straight to the final destination.
3. Redirect loops
/page-a/ → /page-b/ → /page-a/. Browsers show “too many redirects” and Google reports a redirect error. Usually caused by conflicting rules in a plugin and in .htaccess, or HTTPS and www rules fighting each other.
4. Redirecting everything to the homepage
During migrations, it’s tempting to send every old URL to the homepage. Visitors who wanted a specific service land somewhere irrelevant, and Google often treats these as soft 404s anyway.
5. Redirecting to a page that doesn’t exist
This is the one we nearly did ourselves. [CONFIRM 1] While restructuring our location pages, we built a 301 redirect map, then noticed several of the destination pages hadn’t been published yet. If that map had gone live, old URLs would have redirected straight into 404 errors: the worst of both worlds. Fix: test every destination returns 200 before turning redirects on.
6. Forgetting internal links
A redirect is a safety net, not a substitute for updating your own links. Internal links should point to the final URL. Otherwise, every click and every crawl goes through an unnecessary hop.
7. Removing redirects too soon
If old URLs have backlinks or bookmarks, keep the 301s in place long term. Removing them later turns those links back into 404s.
When we used 301s to consolidate pages
Redirects aren’t only for fixing problems. They’re also how you clean up content that competes with itself. [CONFIRM 1]
In 2026, we had several pages targeting nearly the same Mississauga web design searches, and two blog posts covering overlapping cost questions. They were competing with each other for the same rankings. We chose the strongest page in each group, merged the best content into it, and 301-redirected the weaker URLs to it.
The rules we followed:
- Merge content first, then redirect (never redirect to a page that doesn’t cover the topic)
- One hop only, straight to the chosen page
- Update every internal link to point to the new URL
- Remove the old URLs from the sitemap
- Watch Search Console for the old URLs moving to “Page with redirect”
How to set up redirects
WordPress (Rank Math)
- Go to Rank Math → Redirections → Add New.
- Enter the Source URL (old path) and choose a match type (usually Exact).
- Enter the Destination URL.
- Choose the type: 301 Permanent Move, 302 Temporary Move or 307 Temporary Redirect (Rank Math also offers 410 and 451 for removed content).
- Save, then test in a private browser window.
Apache (.htaccess)
# Permanent redirect for a single page
Redirect 301 /old-page/ https://www.example.ca/new-page/
# Temporary redirect
Redirect 302 /sale/ https://www.example.ca/black-friday/
Nginx
location = /old-page/ {
return 301 https://www.example.ca/new-page/;
}
Shopify
When you change a product or page URL handle, Shopify offers a “Create a URL redirect” checkbox in the search engine listing section; leave it ticked. For any other URL, go to Content → Menus → View URL redirects → Create URL redirect (Shopify Help). Shopify’s redirects are 301s, and Shopify notes that browsers and search engines cache them, so test carefully before you save. Our Shopify team can map redirects for migrations.
Site migration redirect checklist
Before any redesign, domain move or URL restructure:
- Crawl the old site and export every URL (including images and PDFs that have backlinks)
- Pull URLs with backlinks and traffic from Ahrefs or Semrush and Search Console
- Map each old URL to its closest new equivalent (one-to-one, not everything to the homepage)
- Confirm every destination URL is published and returns 200
- Use 301 for all permanent moves
- Remove chains: old URLs go straight to final URLs
- Update internal links, navigation menus and canonical tags to new URLs
- Submit the new XML sitemap in Search Console
- Spot-check 20 to 50 old URLs after launch
- Monitor “Redirect error,” “Page with redirect” and “Not found (404)” for 4 to 8 weeks
The full process is in our website redesign SEO checklist.
How to test a redirect
- Browser developer tools: Network tab → reload → the first entry shows the status (301, 302…) and the Location header.
- Command line: curl -I https://www.example.ca/old-page/ shows the status code and destination. Add -L to follow every hop and spot chains.
- Google Search Console: URL Inspection shows the URL Google chose as canonical.
- Crawlers: Ahrefs or Screaming Frog list redirect chains and loops across your whole site.
Remember to test logged out. Cached or logged-in versions can hide what Google actually receives.
Frequently Asked Questions
A 302 status code ("Found") is a temporary redirect. It sends visitors to a different URL while telling search engines the original URL is still the main one.
It means the page you requested responded with a temporary redirect, and the browser automatically followed the Location header to another URL. It's normal, not an error.
Neither is "better"; they say different things. A 301 is right for permanent moves because Google shows the new URL. A 302 is right for temporary moves because Google keeps the original.
Not in the way people used to fear. Google treats permanent server-side redirects as a strong signal to move indexing to the new URL, and back in 2016 Google's Gary Illyes confirmed that 30x redirects no longer lose PageRank (Search Engine Land). The bigger risk is redirecting to irrelevant pages or building long chains, not the redirect itself.
As long as the old URL has backlinks, bookmarks or traffic. For most business sites, that means keeping them indefinitely. They cost almost nothing to leave in place.
Both are temporary. A 307 guarantees the request method and body stay the same, so a form submission isn't turned into a normal page load. 302 doesn't guarantee that.
Both are permanent. A 308 guarantees the request method doesn't change, which matters for APIs and forms. For normal web pages, either works.
It means the URL redirects somewhere else, so Google indexes the destination instead. That's expected for old URLs. Make sure those URLs aren't in your sitemap.
A redirect loop, where URLs redirect to each other in a circle, usually because of conflicting rules in a plugin, .htaccess or your CDN. Find and remove the conflicting rule.







