The worst site migration we ever walked into looked like a success. New theme, faster pages, a slick relaunch the owner was proud of. Then organic traffic fell off a cliff and nobody could say why. It turned out the rebuild had quietly changed a few hundred URLs, and not one of the old addresses pointed anywhere. Every link Google had indexed, every backlink another site had earned them, every bookmark a customer had saved — all of it landed on a 404.
That’s the thing about redirects: they’re invisible until they’re missing, and by the time you notice, the damage has already compounded. A 301 redirect is the small, boring piece of plumbing that carries a page’s visitors and its search-engine reputation from an old URL to a new one. Skip it during a redesign or a slug change and you don’t just annoy visitors — you throw away years of accumulated SEO.
This guide covers what 301 redirects actually do, when to reach for a 301 versus a 302, the three ways to set them up in WordPress, and the mistakes that quietly bleed traffic even when redirects are in place.
What a 301 Redirect Actually Does
A redirect is a signal your server sends before it sends any page content. When a browser or a search-engine crawler asks for a URL, the server can answer with an HTTP status code that says, in effect, “that page lives somewhere else now — go here instead.” The number in that status code is the whole game.
301 means “Moved Permanently.” It tells browsers and search engines that the old URL is gone for good and the new one is its permanent replacement. Per the HTTP specification (MDN’s reference on 301), clients are encouraged to update their links and cache the redirect. That caching is a double-edged sword, which we’ll come back to.
The reason SEO people care so much is consolidation. Google’s own documentation on redirects describes a permanent redirect as the clearest way to tell Google that a page has moved and that the destination should be indexed in its place. In practice, that’s how the ranking signals a page has built up over years get passed to the new URL instead of evaporating.
301 vs 302 vs 307 vs 308
The status code is not a formality, and picking the wrong one has real consequences. Here’s what each one signals:
- 301 (Moved Permanently) — the page has permanently moved. Use this for redesigns, slug changes, merged posts, and domain moves. This is the one you’ll use 95% of the time.
- 302 (Found) is a temporary redirect. It tells search engines to keep indexing the original URL because the move is short-term — a maintenance page, an A/B test, a seasonal landing page.
- 307 (Temporary Redirect) is the stricter modern version of a 302 that also preserves the request method.
- 308 (Permanent Redirect) behaves like a 301 but guarantees the request method (a POST stays a POST). For plain content pages a 301 is the conventional choice.
The costly mistake is using a 302 for a move that’s actually permanent. Because a 302 tells search engines to hang on to the old URL, the new page can struggle to inherit the old one’s standing. When in doubt about a genuine move, reach for the 301.
Every URL you’ve ever published is a small deposit of trust — links pointing at it, rankings built on it, people who bookmarked it. Change or delete that URL without a redirect and you forfeit the deposit. A 301 is how you move the balance to the new address instead of leaving it to rot in a 404.
When You Actually Need a Redirect
You don’t need to redirect everything, but a few common situations almost always call for one. If any of these describe your site, there’s a redirect you’re probably missing.
You changed a post or page slug
Rename a post’s slug from /summer-sale to /summer-sale-2026 and the old URL is now a 404 for anyone who had it. WordPress actually softens this one for you: core includes a feature called wp_old_slug_redirect() that stores previous slugs in a post-meta key (_wp_old_slug) and quietly forwards the old permalink to the current one. It’s genuinely handy, but it only covers slug changes on existing posts and pages — it won’t help with deleted content, a new permalink structure, or a domain move. Treat it as a safety net, not a strategy.
You deleted or merged content
When you retire a thin blog post or fold three overlapping articles into one, redirect the old URLs to the closest surviving page. Google’s guidance is worth taking seriously here: redirecting a pile of removed pages to your homepage can get treated as a “soft 404,” where Google decides the redirect is basically meaningless and drops the old URLs anyway. Point each old URL at the most relevant specific replacement instead, and the redirect does its job.
You moved to HTTPS or a new domain
Switching from HTTP to HTTPS, from www to non-www (or vice versa), or to an entirely new domain all require site-wide 301s so that every old address funnels to its new equivalent. Get this wrong during a domain move and you can split your authority across two versions of the site that search engines see as separate.
You want to fix a legacy 404
Old URLs don’t stop existing just because you forgot about them. Backlinks, old email campaigns, and printed materials keep sending people to addresses that 404. Redirecting those to a live, relevant page recovers traffic and link value you already paid for.
Three Ways to Set Up 301s in WordPress
There’s no single right method — it depends on how comfortable you are editing server files and how many redirects you’re managing. From easiest to most technical:
A redirect plugin (best for most people)
The free Redirection plugin, maintained by John Godley, is the tool most WordPress sites reach for. You add a source URL and a target from the admin screen, and it handles the 301 in PHP. It also logs 404s so you can see which broken URLs are actually getting hit, and it supports regex for pattern-based rules. For anyone who doesn’t want to touch server config, this is the pragmatic default.
The tradeoff is that PHP-based redirects run WordPress on every hit, which is marginally slower than a redirect handled at the server level. For a normal site that difference is negligible; for very high-traffic redirects it can add up.
Server-level rules (fastest)
If your host runs Apache, you can add redirects directly to the .htaccess file, which the server reads before WordPress even loads:
Redirect 301 /old-page/ https://example.com/new-page/
On nginx, the equivalent lives in your server block and is usually managed by your host:
location = /old-page/ { return 301 https://example.com/new-page/; }
Server-level rules are the fastest option because they never invoke PHP, but a syntax error in .htaccess can take your whole site down with a 500 error, so edit with care and keep a backup of the original file.
Your SEO plugin’s redirect manager
Several SEO suites bundle a redirect manager, and many will offer to create a redirect automatically the moment you change a published post’s slug — which closes one of the most common gaps before you even think about it. If you already run a full SEO plugin, check whether it has this feature before adding a separate one.
Permanent move? Use 301. · Temporary? Use 302/307. · Deleted content? Redirect to the closest live page, not the homepage. · Bulk / high traffic? Server-level rules. · A few here and there? A plugin is fine.
The Mistakes That Quietly Cost You Traffic
Setting up a redirect is easy. Setting up redirects that don’t leak value is where people slip. These are the ones we see most often when auditing a site.
Redirect chains
A chain is a redirect that points to another redirect that points to yet another page: /a → /b → /c. Each hop adds latency for visitors and burns crawl budget, and long chains can eventually stop being followed. Google follows chains but recommends keeping them short — ideally a single hop. When you add a new redirect, always point it at the final destination, not at another redirect.
Redirect loops
A loop is a chain that eats its own tail: /a → /b → /a. The browser gives up and shows an error instead of a page. Loops usually come from conflicting rules — one in a plugin, one in .htaccess — so keep your redirects in one place if you can.
Blanket redirects to the homepage
It’s tempting to send every dead URL to the homepage and call it done. Search engines often read that as a soft 404 and ignore it, and visitors who wanted a specific article land on your front page confused. Map old URLs to relevant replacements one by one; it’s more work up front and far better for both rankings and people.
Forgetting the redirect is cached
Because browsers cache 301s aggressively, a permanent redirect you set by mistake can be stubborn to undo — returning visitors keep getting forwarded even after you delete the rule, because their browser remembers it. That’s a good reason to use a 302 while you’re testing something and only switch to a 301 once you’re certain the move is permanent.
How to Find the Redirects You’re Missing
You can’t redirect a 404 you don’t know about. A few habits keep the gaps from piling up. Enable 404 logging (the Redirection plugin does this, and so does Google Search Center’s Search Console under the crawl and indexing reports) so you can see which broken URLs real visitors and crawlers are hitting. Before any redesign or migration, export your existing URLs and build a redirect map before you launch, not after. And after a migration, crawl the new site with a tool like Screaming Frog to catch any old link that still resolves to a 404 or a redirect chain.
The last cleanup we did on this front was a site that had changed its permalink structure two years earlier and never redirected the old /?p=123 style URLs. Search Console was quietly reporting hundreds of “not found” errors that nobody had looked at. A single regex rule and a batch of specific 301s recovered rankings on a dozen pages within a few weeks. The traffic was never gone — just stranded behind a 404.
Where amplifi Fits
Redirects are one piece of keeping a site legible to search engines and AI crawlers alike. The amplifi.plugins suite handles the neighboring pieces — bulk SEO meta, schema.org structured data, and more — so the technical SEO layer is consistent across your whole site. You don’t need it to set up a 301, but if you’re cleaning up an old site’s SEO, it’s the same job from a different angle.
amplifi.plugins is MIT licensed and free to use — an AI-powered WordPress suite covering SEO meta, schema, security scanning, translation, and more. One install, one update, every tool. The full source is on GitHub.
View on GitHubFrequently Asked Questions
Cleaning up an old site’s SEO? Redirects are step one — the amplifi.plugins suite handles the meta and schema layer that goes with it.
Built by amplifi.studio — see also our WordPress malware cleanup guide.