Deutsch
Redirects

301 redirect

Also known as: 301 Moved Permanently, permanent redirect

A 301 redirect is a server response with the HTTP status code 301 Moved Permanently. It tells browsers and crawlers that a URL has permanently moved to a new address, which the server sends in the Location header.

At a glance

Class
3xx (redirection)
Duration
permanent
In Google
signal that the target should become the canonical URL
Request method
POST may become GET when followed (not with 308)
Caching
heuristically cacheable

Last checked:

What does a 301 redirect mean for SEO?

Google treats 301 and 308 as permanent redirects and uses them as a strong signal that the target URL should be canonical. Over time, the new URL replaces the old one in search results. With a temporary redirect (302, 307), the original URL tends to stay visible. Google calls server-side redirects the most reliable option and recommends JavaScript redirects only when nothing else is possible.

For site moves, Google advises keeping redirects in place as long as possible, generally at least one year. It also recommends redirecting straight to the final destination. Googlebot follows up to 10 redirect hops. If a chain cannot be avoided, the site move documentation advises ideally no more than 3 hops and fewer than 5. Each extra hop adds a request for browsers and crawlers.

RFC 9110 notes one technical difference to 308. For historical reasons, a browser may turn a POST request into a GET when following a 301. A 308 keeps the method. For normal page views this has no effect; for forms and APIs it can matter.

Redirect types compared
TypePermanent or temporary?Request methodEffect in GoogleHow reliably Google detects it
301 Moved Permanently (this term)permanentPOST may become GET when followedSignal that the target should become canonicalmost reliable (server-side)
308 Permanent Redirectpermanentpreservedsame as 301most reliable (server-side)
302 FoundtemporaryPOST may become GET when followednot used as a canonical signal for the target; other signals can still get it indexedmost reliable (server-side)
307 Temporary Redirecttemporarypreservedsame as 302most reliable (server-side)
Meta refresh, instant (0 s)permanent– (redirect inside the HTML, no 3xx status code)same as 301after server-side redirects
Meta refresh, delayed (> 0 s)temporary– (redirect inside the HTML, no 3xx status code)same as 302after server-side redirects
JavaScript (location)permanent– (redirect in the browser)same as 301, but only if Google renders the pageleast reliable: if rendering fails, Google may never see it

Google orders redirect types by how likely it is to interpret them correctly: server-side redirects first, JavaScript last. Request-method behaviour is defined in RFC 9110 (section 15.4). Sources: Google Search Central: Redirects and Google Search (last updated 2026-04-14); Google Search Central: How to specify a canonical URL (redirects as canonical signal); RFC 9110: HTTP Semantics, 15.4 Redirection 3xx. Last checked: .

Redirect chain and direct redirectTop: /old reaches the target via two intermediate URLs, three redirects and four requests. Bottom: /old redirects straight to the target, two requests.Chain: 3 redirects, 4 requests/old/products/old/p/new-2019/target/200 OK301301301Direct: 1 redirect, 2 requests/old/target/200 OK301Chains build up after several relaunches when old rules are never pointed at the current URL.
Every hop in a chain is a separate request. Google’s crawlers follow up to 10 redirect hops; Google still recommends redirecting straight to the final destination. Sources: Google Search Central: HTTP status codes, network and DNS errors; Google Search Central: Site moves with URL changes.

Example

Server response for an old URL:

HTTP
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page/

The matching rule in an Apache .htaccess file:

Apache
Redirect 301 /old-page/ https://www.example.com/new-page/
How a redirect with status 301 worksThe browser requests /old. The server responds with 301 Moved Permanently and the header Location: /new. The browser then sends a new request to /new and receives 200 OK. Below, a grid: 301 and 308 are permanent, 302 and 307 temporary. With 301 and 302 a POST may become GET when following the redirect; with 307 and 308 the method stays the same.Browser (client)ServerGET /old301 Moved PermanentlyLocation: /newGET /newnew request to the Location200 OKPERMANENTTEMPORARYPOST may become GETwhen following (historical)method and bodystay the same301Moved Permanently302Found308Permanent Redirect307Temporary RedirectSchematic, headers shortened. For GET requests the method stays GET with all four codes.
The server names the new target in the Location header, and the browser requests it with a second request. 301 and 308 are permanent, 302 and 307 temporary. Only with 301 and 302 may a POST become GET when the redirect is followed. Sources: RFC 9110: HTTP Semantics, section 15.4 (Redirection 3xx); MDN: Redirections in HTTP.

Common mistakes

  • 302 instead of 301 for a permanent move, for example because a CMS or plugin defaults to 302, as WordPress’s wp_redirect() does.
  • Chains after several relaunches, where old rules were never updated to point at the current URL.
  • Redirecting everything to the home page. Google warns this may be treated as a soft 404. Each old URL should lead to its closest equivalent.

FAQ

How long should a 301 redirect stay in place? Google recommends at least one year after a site move and, from the user’s point of view, indefinitely, as long as old links and bookmarks exist.

301 or 308? Google treats both as permanent. 308 is the better choice when the request method has to be preserved, for example for form submissions or API endpoints.

What do 307 and 308 redirects mean? 307 Temporary Redirect and 308 Permanent Redirect are the method-preserving counterparts of 302 and 301.

Sources

  1. Redirects and Google Search – Google Search Central (updated Apr 14, 2026)developers.google.com
  2. Site moves with URL changes – Google Search Central (updated Aug 20, 2026)developers.google.com
  3. How HTTP status codes, and network and DNS errors affect Google Search – Google Search Centraldevelopers.google.com
  4. RFC 9110: HTTP Semantics, 15.4.2 301 Moved Permanently – IETFrfc-editor.org
  5. 301 Moved Permanently – MDN Web Docsdeveloper.mozilla.org
  6. wp_redirect() – WordPress Developer Resourcesdeveloper.wordpress.org

Last updated: