An HTTP redirect is a 3xx response with a Location header that tells the client to fetch a different URL. The two most common are 301 Moved Permanently and 302 Found. The strict variants 308 and 307 behave the same but preserve the request method (a POST stays a POST).
Why it matters
Choosing the right status code matters for both SEO and correctness. A 301 signals a permanent move and consolidates ranking signals onto the new URL — essential when retiring pages, changing URL structure, or migrating domains. A 302 signals a temporary move and does not reliably consolidate signals, so using it for a permanent move can leave the old URL stuck in the index. Redirect chains (A → B → C) waste crawl-budget, add latency for users, and can lose signals at each hop. For HTTPS upgrades, redirects also interact with hsts and security posture.
How to use them
- Use
301(or308for non-GET) when permanently retiring or moving a URL. - Use
302(or307) only for genuinely temporary states — A/B tests, geo-routing, maintenance. - Avoid chains: redirect each old URL directly to the final destination in one hop.
- Always
301from HTTP to https, and pair it with hsts. - Update internal links and your sitemap to point to the final URL — do not rely on redirects forever.
- Pair redirects with a matching canonical-tag on the destination.
- Audit your http-status-codes periodically for redirect loops and 302s that should be 301s.