What Is 301 Redirect?
A 301 redirect is a server response carrying the HTTP status code 301 (Moved Permanently) that tells browsers and search engines a URL has permanently moved to the address named in the Location header. Google treats it as a permanent, canonicalizing signal and consolidates the old page’s ranking signals onto the destination URL.
- A 301 is one of two permanent redirect signals Google recognizes; the other is HTTP 308. Both make the destination appear as canonical in search results.
- Because a 301 converts a POST request to GET under the Fetch Standard, use a 308 Permanent Redirect when you must preserve the original request method.
- Google uses permanent redirects as a canonicalization signal; temporary redirects such as 302 and 307 do not consolidate signals onto the target.
- A server-side 301 is Google’s recommended redirect method — more reliable than meta refresh or JavaScript redirects, which can fail to render and go undetected.
How a 301 Redirect Works
When a browser or crawler requests a URL that has been permanently moved, the server answers not with page content but with a redirection response: the HTTP status line 301 Moved Permanently plus a Location header pointing to the new address. The client reads the Location value and automatically issues a fresh request to that URL, so the visitor lands on the destination page without ever seeing the intermediate step. The whole exchange is invisible in normal browsing.
The 301 code carries a specific meaning that separates it from an ordinary temporary hop: it declares the move to be permanent. For search engines that distinction is the entire point. According to Google Search Central, a permanent redirect is a canonicalization signal — Google will show the redirect target as the canonical URL in search results and consolidate the source page’s ranking signals onto that target. A temporary redirect does the opposite: it keeps the original URL in the index and transfers nothing.
Google recognizes 301 as one of several permanent redirect types. Alongside it sit HTTP 308 (also “Moved Permanently”), an instant meta refresh with a zero-second delay, and JavaScript location redirects. Of these, Google is explicit that a permanent server-side redirect is the most reliable choice, because meta refresh and JavaScript redirects depend on rendering that can fail and leave the move undetected.
Types of Permanent Redirect and the 301 vs 308 Nuance
There are two HTTP status codes that both mean “moved permanently,” and the difference between them matters when forms are involved:
- 301 Moved Permanently — the classic permanent redirect. Under the Fetch Standard, a browser that receives a 301 in response to a
POSTrequest will convert the method toGETon the follow-up request, discarding the request body. - 308 Permanent Redirect — semantically identical for SEO, but it forbids changing the request method. A
POSTstays aPOSTacross the hop, preserving submitted data.
For the overwhelming majority of SEO use cases — retiring an old URL, migrating a domain, tidying a URL structure — the redirected requests are simple GETs, so the POST-to-GET behavior is irrelevant and a plain 301 is the right tool. The moment you are redirecting an endpoint that receives form submissions or API writes, reach for 308 so the method and payload survive. Both codes send Google the same permanent canonicalization signal.
Example of a 301 Redirect
A live, documented example runs on MDN Web Docs itself. When an old documentation path is requested, MDN’s server answers with a real 301 instead of the page. Requesting the legacy GET /en-US/docs/AJAX path returns:
HTTP/2 301
cache-control: max-age=2592000,public
location: /en-US/docs/Learn_web_development/Core/Scripting/Network_requests
content-type: text/plain; charset=utf-8
content-length: 97
Moved Permanently. Redirecting to /en-US/docs/Learn_web_development/Core/Scripting/Network_requests
Two details in that response are worth reading closely. First, the location header names the exact destination — the AJAX article was folded into a broader “Network requests” lesson, and the 301 forwards every visitor and crawler there permanently. Second, the cache-control: max-age=2592000 header tells clients to remember the redirect for 2,592,000 seconds, which is 30 days. That caching is a hallmark of permanent redirects: browsers are encouraged to skip the old URL entirely on repeat visits, whereas a temporary redirect would not invite that kind of aggressive caching.
For a search engine, this exchange resolves cleanly. Google requests the old AJAX URL, receives a 301, follows it to the Network requests lesson, and treats that lesson as the canonical page — any links and authority pointing at the old AJAX path are consolidated onto the destination. The old URL quietly drops out of the index in favor of the new one, which is precisely the outcome a permanent move is supposed to produce.
The mistake I see most often is treating the choice between 301 and 302 as a technicality that Google will sort out on its own. It won’t. The status code is a declaration of intent: 301 says "this move is permanent, move the equity," and 302 says "leave the old URL indexed, this is temporary." I have watched a site relaunch under a new URL structure with 302s across the board because a developer picked the framework default, and months later the old URLs were still the ones ranking while the new pages sat uncanonicalized. Google was doing exactly what it was told. If the move is permanent, say so with a 301 (or a 308 when you need to keep POST data intact), and don’t leave the decision to a redirect your CMS chose for you.
301 Redirect vs 302 Redirect
| 301 Redirect | 302 Redirect | |
|---|---|---|
| HTTP status | 301 Moved Permanently | 302 Found |
| Meaning | The move is permanent | The move is temporary |
| Google’s treatment | Canonicalizes to the destination; consolidates ranking signals | Keeps the original URL indexed; transfers no signals |
| When to use | Retiring a URL for good, domain migration, URL restructuring | A/B tests, short-lived promos, maintenance pages, geo/device routing |
| Method on POST | Converts POST to GET (use 308 to preserve) | Converts POST to GET (use 307 to preserve) |
The two codes look almost identical on the wire but instruct search engines to do opposite things. Picking the wrong one on a permanent move — a 302 where a 301 belongs — leaves the old URL ranking and the new one uncanonicalized, which is one of the most common self-inflicted technical SEO wounds during a site migration.
Frequently Asked Questions
Does a 301 redirect pass SEO value?
What is the difference between a 301 and a 302 redirect?
Does a 301 redirect preserve POST data?
How long should I keep a 301 redirect in place?
The Bottom Line
A 301 is how you tell the web that a page has a new permanent home. The status code does two jobs at once: it forwards every visitor to the destination and it instructs search engines to treat that destination as the canonical page, carrying the old URL’s authority with it. Choose it deliberately for permanent moves, reach for 308 when a POST method must survive the hop, and never let a framework default decide permanence for you.
Sources
- How Google handles redirects for Search — Google Search Central
- 301 Moved Permanently - HTTP — MDN Web Docs
Roborank crawls your site for redirect problems — temporary redirects on permanent moves, broken hops, and chains that leak crawl budget — and tells you exactly which URLs to fix.
Audit your redirects →Rank & Cash — the weekly SEO breakdown
One practical teardown a week on ranking in search and getting cited by AI. No fluff.
