Redirect

A redirect is an HTTP response telling a client that a resource is at a different URL. A 301 or 308 signals a permanent move and passes ranking signals to the target; a 302 or 307 signals a temporary one and keeps the original URL canonical.

The status code carries the meaning, and choosing the wrong one produces predictable problems.

301 and 308 mean permanent. The engine eventually replaces the old URL with the target in its index and transfers the signals the old URL had accumulated. 308 preserves the request method; 301 historically did not.

302 and 307 mean temporary. The original URL stays the one in the index. Use these for genuinely temporary situations — maintenance pages, A/B tests — and not for a move you have no intention of reversing.

Two things to avoid. Chains: each hop is a separate fetch, and long chains waste crawl budget and lose signal. Redirect straight to the final destination. Irrelevant targets: redirecting a removed page to the homepage rather than to the closest equivalent is treated as a soft 404, because the target does not answer what the original did.

A JavaScript or meta-refresh redirect works but is slower and depends on rendering. Prefer a server-side status code where you can set one.