Website Checker - HTTP 301 Moved Permanently: The Redirect That Carries Weight

HTTP 301 Moved Permanently: The Redirect That Carries Weight

Jul 24, 2026 · HTTP Status Codes

The most stressful deploy I've ever watched was a domain migration: 40,000 URLs moving from a legacy .co.uk domain to a new .com, all at once, on a Tuesday morning. Traffic dipped 15% for two weeks, then recovered fully. The entire outcome hinged on one thing — every old URL answering with a correct HTTP 301 pointing at its exact new counterpart. No wildcard-to-homepage shortcuts, no chains, no gaps.

That's what the 301 status code is for. It's a permanent forwarding address, and it's the only redirect search engines treat as a full transfer of trust.

What a 301 status code tells the client

When a server responds with 301 Moved Permanently, it sends two critical pieces of information: the status line, and a Location header with the new URL. Browsers follow it automatically and — this is the "permanently" part — cache the redirect, sometimes aggressively, so future visits skip the old URL entirely. Crawlers do something more consequential: they update their index, replacing the old URL with the new one and consolidating ranking signals onto it.

One technical wrinkle worth knowing: by the letter of the spec, a client receiving a 301 on a POST request may resubmit it as a GET. If you're redirecting API endpoints or form handlers and the method must survive, you want a 308 instead. For ordinary page-to-page moves, 301 is exactly right.

What actually happens to your rankings

Google has stated that 301s pass full PageRank — the old "you lose ~15% per redirect" rule was retired years ago. In practice, a clean 301 migration transfers rankings within days to weeks, depending on how fast the old URLs get recrawled. What still costs you:

  • Redirecting to non-equivalent pages. Old article about blue widgets → new homepage. Google treats irrelevant mass redirects as soft 404s and drops the equity.
  • Chains. A → B → C → D works, but each hop adds latency and crawlers stop following after around ten. Long redirect chains are the most common leak I find in audits of older sites.
  • Redirects that flip back and forth. If a URL 301s to a target that later 301s back, you've built a loop, and browsers will show an error before any equity moves anywhere.

Setting up 301 redirects without guessing

On nginx, the clean per-URL form is a return in a location block:

location = /old-page/ { return 301 /new-page/; }

On Apache, in the vhost or .htaccess:

Redirect 301 /old-page/ https://example.com/new-page/

For pattern-based moves — say an entire directory rename — use a rewrite with the permanent flag rather than a hundred individual lines: rewrite ^/old-blog/(.*)$ /blog/$1 permanent; on nginx. On WordPress, a redirect plugin works, but redirects handled at the web server or CDN level fire before PHP even loads, which matters when you have thousands of them.

Don't forget the host-level 301s every site needs: http to https, and www to non-www (or the reverse — pick one and commit). These canonicalization redirects should each resolve in a single hop. A surprising number of sites chain them — http://www → https://www → https:// — doubling the redirect cost on every entry from an old link. Configure the server to jump straight to the canonical protocol and host in one 301.

Verify before you announce anything

Never trust a redirect you haven't watched happen. curl shows you every hop:

curl -sIL https://example.com/old-page/ | grep -E "HTTP|location"

You want exactly one HTTP/2 301 followed by one location: line pointing at the final URL, then a 200. If you see 302 where you meant 301, check your CDN or a plugin sitting in front — Cloudflare page rules and several WordPress plugins default to temporary redirects. If you see three or four hops, collapse them so the original URL points straight at the final destination.

One caution while testing: browsers cache 301s hard. If you fix a wrong redirect target, your own browser may keep sending you to the old destination for days. Test in a private window or stick with curl, which never caches.

When a 301 is the wrong tool

Reach for something else when:

  • The move is temporary — an A/B test, a seasonal landing page, maintenance. Use a 302 so search engines keep the original URL indexed.
  • The content is simply gone with no equivalent replacement. A 404 or 410 is more honest than a forced redirect to a barely related page.
  • You might reverse the decision. Because clients cache 301s, undoing one is slow and messy. If you're not sure the move is forever, it isn't permanent yet.

Keeping your redirect map from rotting

Redirects accumulate like sediment. Every redesign adds a layer, nobody removes the old ones, and five years later a single request tunnels through four rewrites from three different eras. Twice a year, run a crawl that maps every redirect on your site and flatten what you find: point every old URL directly at its current final destination, delete rules whose sources no longer get traffic, and check that internal links point at final URLs rather than through redirects. Your own templates shouldn't rely on your redirect layer — every internal link that 301s is a small, permanent tax on both users and crawlers.

Frequently Asked Questions

Does a 301 redirect lose PageRank?

No — Google confirmed that 301 redirects pass full PageRank, retiring the old assumption of a ~15% loss per hop. The real losses come from redirecting to irrelevant pages (treated as soft 404s), long redirect chains, and redirects that never get crawled.

How long should I keep 301 redirects in place?

Ideally indefinitely, but at minimum a year. Google recommends keeping migration redirects live for at least twelve months so all ranking signals fully transfer. External sites will link to your old URLs forever, so dropping the redirects later turns those backlinks into 404s.

Why is my 301 redirect not working after I changed it?

Almost always browser caching — browsers store 301 responses and keep following the old target without re-asking the server. Test with curl -IL or a private browsing window to see the live behavior, and clear the cache or wait for it to expire for regular visitors.

Should I use 301 or 308 for a permanent redirect?

For normal web pages, 301 is fine and universally supported. Choose 308 when the HTTP method must be preserved — for example, redirecting API endpoints that receive POST requests, since a 301 permits clients to convert the resubmitted request to GET.

Try WebsiteChecker.Tech Free

Run a free technical SEO audit on any website. Get a client-ready report in minutes.

Start Free Scan