redirect RFC 9110
HTTP 301 Moved Permanently
The resource has permanently moved to a new URL — clients and search engines should update their references.
What it means
The URL the client requested is gone for good; the new location is in the `Location` header. Browsers cache 301s aggressively (often for the lifetime of the browser session or longer), so once you send a 301 to a client, changing the destination later requires clearing the browser's HSTS/redirect cache. Search engines transfer the link equity from the old URL to the new one after seeing 301s.
When servers send it
- •Permanent URL change (old /about-us → new /about)
- •HTTP → HTTPS canonical redirect
- •www → non-www or vice versa
- •Trailing slash normalization
What the client does
Follows the redirect to the new URL. Updates bookmarks, caches the redirect, and reports the new URL to search engines.
When you see it
- •Intentional permanent redirect
How to fix it
- 1.If unexpected: check your webserver config, .htaccess, or Cloudflare Page Rules for a redirect you forgot about
- 2.Never use 301 for temporary changes — it will get cached and be painful to reverse
Similar codes
302 Found redirect
Resource is temporarily at a different URL — do not update bookmarks or search engine indexes.
307 Temporary Redirect redirect
Same as 302 but explicitly preserves the HTTP method — POST stays POST.
308 Permanent Redirect redirect
Same as 301 but explicitly preserves the HTTP method — POST stays POST.
304 Not Modified redirect
The cached copy the client already has is still valid — no body sent.
← All HTTP status codes · HTTP status cheat sheet · HTTP headers reference