HTTP 301 Moved Permanently

The permanent redirect: the resource lives at a new URL and everyone should update their links.

What HTTP 301 means

HTTP 301 Moved Permanently tells clients the requested URL has been replaced by the one in the Location header, permanently. Browsers follow it automatically and cache it aggressively; search engines transfer the old URL's ranking signals to the new one over time.

One subtlety: a 301 allows clients to change POST to GET on the redirected request. If the method and body must be preserved, use 308 Permanent Redirect instead.

Common causes of 301 responses

  • A site migrated to a new domain or from http:// to https://.
  • URL structure changed (renamed slugs, removed folders) and old paths redirect to new ones.
  • www / non-www or trailing-slash canonicalization is enforced by the server.
  • A redirect chain: several 301s strung together after repeated migrations.

Good practices for developers

  • Redirect to the final URL in one hop — chains of 301s waste crawl budget and slow users down.
  • Because browsers cache 301s for a long time, double-check the target before deploying; undoing a wrong 301 takes users a hard cache clear.
  • Keep permanent redirects in place for at least a year after a migration so search engines fully transfer signals.

Example response

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

SEO impact

301 is the workhorse of SEO migrations: it passes most link equity to the target URL and tells search engines to index the new address. Use it for any permanent URL change, and avoid redirecting everything to the homepage — redirect each old URL to its closest equivalent.

FAQ

Does a 301 redirect pass PageRank?

Yes. Google has confirmed 301 (and 302) redirects pass ranking signals to the target URL, though consolidation takes time.

What is the difference between 301 and 302?

301 is permanent — caches and search engines update to the new URL. 302 is temporary — the original URL stays canonical.

What is the difference between 301 and 308?

Both are permanent, but 308 forbids changing the HTTP method: a POST stays a POST. 301 lets clients switch to GET.