Moved Permanently
Redirection (3xx)The 301 Moved Permanently status code indicates that the requested resource has been permanently moved to a new URL. Search engines will update their index to use the new URL, and browsers will cache the redirect. The new URL is specified in the Location header. This is the primary tool for URL migration and canonical URL enforcement.
What is HTTP 301 Moved Permanently?
HTTP 301 Moved Permanently is a redirection (3xx) status code. The 301 Moved Permanently status code indicates that the requested resource has been permanently moved to a new URL. Search engines will update their index to use the new URL, and browsers will cache the redirect. The new URL is specified in the Location header. This is the primary tool for URL migration and canonical URL enforcement. Common causes include domain migration (old domain to new domain) and url structure change. This response indicates the server processed the request as expected.
Example Response
HTTP/1.1 301 Moved Permanently Location: https://www.example.com/new-page
Common Causes
- • Domain migration (old domain to new domain)
- • URL structure change
- • HTTP to HTTPS redirect
- • Non-www to www (or vice versa) redirect
What to Know
- 1. Update all internal links and references to use the new URL
- 2. Ensure the Location header points to the correct new URL
- 3. Set up proper 301 redirects in your web server or CDN configuration
- 4. Update sitemaps and inform search engines of the change
Frequently Asked Questions
Does a 301 redirect pass SEO value?
Yes. A 301 passes most link equity (SEO value) to the new URL. Google has confirmed that 301 redirects transfer ranking signals. It is the recommended redirect for permanent URL changes.
What is the difference between 301 and 302?
301 is permanent — search engines update their index and browsers cache the redirect. 302 is temporary — search engines keep the original URL and browsers do not cache. Use 301 for permanent moves and 302 for temporary ones.
Can a 301 change the HTTP method?
Historically, some clients changed POST to GET on 301 redirects. If you need to preserve the method, use 308 Permanent Redirect instead, which explicitly forbids method changes.