Skip to content
301

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

What to Know

  1. 1. Update all internal links and references to use the new URL
  2. 2. Ensure the Location header points to the correct new URL
  3. 3. Set up proper 301 redirects in your web server or CDN configuration
  4. 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.

Related Status Codes

302 Found 307 Temporary Redirect 308 Permanent Redirect

Related Reading

HTTP Status Codes Cheat Sheet: Every Code Explained → JSON vs YAML vs TOML: Which Config Format to Use →