3xx Redirection · RFC 9110 §15.4.2

301 Moved Permanently

The resource has a new permanent URL; clients and search engines should update.

What 301 means

The canonical redirect for URL changes: HTTP to HTTPS, www to apex, old paths to new ones. Browsers cache it, and search engines transfer ranking signals to the target.

Because it is cached aggressively, a wrong 301 is painful to undo. Test with a 302 first if you are not sure, then switch. For POST requests most clients change the method to GET on a 301; use 308 to preserve the method.

Common causes

  • A deliberate redirect rule in the web server, CDN or application.
  • Trailing-slash or case normalisation.

How to fix it

  • Update links to point straight at the final URL to avoid redirect chains.
  • Check for loops: a 301 that redirects to itself shows as ERR_TOO_MANY_REDIRECTS.

What it looks like

A typical response:

HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-path
Cache-Control: max-age=31536000

The same event in an nginx access log (the status is the number after the request line):

203.0.113.7 - - [10/Sep/2026:10:12:01 +0000] "GET /old-page HTTP/1.1" 301 153 "-" "Mozilla/5.0"

Check it with curl

-i prints the status line and headers, and -w '%{http_code}' prints only the number, which is handy in scripts and health checks. Replace the URL with yours:

curl -i -L --max-redirs 5 https://example.com/old-path

Compare what curl sees with what the browser sees. A different status from the same URL usually means a cache, a CDN edge or a cookie is in the way.

Investigating a run of 301s? Paste the log excerpt into Log Share to get line numbers, highlighting and an expiring link for whoever is on call with you.

  • 302Found: A temporary redirect; clients should keep using the original URL in future.
  • 307Temporary Redirect: A temporary redirect that preserves the request method and body.
  • 308Permanent Redirect: A permanent redirect that preserves the request method and body.

FAQ

Does a 301 pass SEO value?

Yes. Search engines treat 301 as a permanent move and consolidate signals on the destination, provided the target is a close equivalent of the original page.

How do I clear a cached 301 in Chrome?

Open DevTools, tick Disable cache on the Network tab, or clear browsing data for the site. Cached 301s are per browser, so other users still see the old one until it expires.