A redirect sends browsers and crawlers that request one URL automatically to a different URL. In SEO, the term usually means a server response with a 3xx HTTP status code, used after a URL change, a domain move, or a switch to HTTPS.
At a glance
- Type
- forwarding to another URL, usually with a 3xx status code
- Values
- permanent: 301, 308 · temporary: 302, 303, 307
- Other forms
- meta refresh, JavaScript
- Googlebot follows
- up to 10 redirect hops
- Specification
- RFC 9110, section 15.4
Last checked:
Which types are there?
Google groups redirects into permanent and temporary ones:
- Permanent: 301 and 308, plus an instant
meta refreshor HTTP refresh (0 seconds) and a JavaScriptlocationchange. Google treats them as a strong signal that the target is canonical and usually shows the target in search results. - Temporary: 302, 303, and 307, plus a delayed
meta refresh. The original URL usually stays in the results.
RFC 9110 adds a technical difference. With 301 and 302, browsers may change a POST request to GET for historical reasons. With 307 and 308 they must keep the method.
Google calls server-side redirects the most reliable option. JavaScript redirects are meant for cases where neither a server-side redirect nor a meta refresh is possible, because Google has to render the page to see them.
| Type | Permanent or temporary? | Request method | Effect in Google | How reliably Google detects it |
|---|---|---|---|---|
| 301 Moved Permanently | permanent | POST may become GET when followed | Signal that the target should become canonical | most reliable (server-side) |
| 308 Permanent Redirect | permanent | preserved | same as 301 | most reliable (server-side) |
| 302 Found | temporary | POST may become GET when followed | not used as a canonical signal for the target; other signals can still get it indexed | most reliable (server-side) |
| 307 Temporary Redirect | temporary | preserved | same as 302 | most reliable (server-side) |
| Meta refresh, instant (0 s) | permanent | – (redirect inside the HTML, no 3xx status code) | same as 301 | after server-side redirects |
| Meta refresh, delayed (> 0 s) | temporary | – (redirect inside the HTML, no 3xx status code) | same as 302 | after server-side redirects |
| JavaScript (location) | permanent | – (redirect in the browser) | same as 301, but only if Google renders the page | least reliable: if rendering fails, Google may never see it |
Google orders redirect types by how likely it is to interpret them correctly: server-side redirects first, JavaScript last. Request-method behaviour is defined in RFC 9110 (section 15.4). Sources: Google Search Central: Redirects and Google Search (last updated 2026-04-14); Google Search Central: How to specify a canonical URL (redirects as canonical signal); RFC 9110: HTTP Semantics, 15.4 Redirection 3xx. Last checked: .
Example
A page moves from /products/shoes to /shoes/. The server answers requests for the old URL like this:
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/shoes/
On an Nginx server, the rule could be:
location = /products/shoes { return 301 https://www.example.com/shoes/; }
Common mistakes
- Chains: A redirects to B, B to C. Googlebot follows up to 10 hops (HTTP status code documentation). Google advises pointing straight at the final destination and otherwise keeping chains ideally to no more than 3 hops and fewer than 5 (site move documentation).
- Internal links to redirected URLs: Navigation and XML sitemaps should list the final URLs.
- Removing redirects too soon: After a site move, Google recommends keeping redirects as long as possible, generally at least one year.
- Everything to the home page: Google warns that sending many old URLs to one irrelevant page like the home page can confuse users and may be treated as a soft 404.
FAQ
What is the difference between a 301 and a 302 redirect? 301 Moved Permanently signals a permanent move, 302 Found a temporary one. For Google, 301 is a strong and 302 a weak signal that the target URL should be canonical.
Sources
- Redirects and Google Search – Google Search Central (updated Apr 14, 2026)developers.google.com
- How HTTP status codes affect Google's crawlers – Google crawling documentation (updated Feb 4, 2026)developers.google.com
- Site moves with URL changes – Google Search Central (updated Aug 20, 2026)developers.google.com
- RFC 9110: HTTP Semantics, Section 15.4 Redirection 3xx – IETFrfc-editor.org
- Redirections in HTTP – MDN Web Docsdeveloper.mozilla.org
Last updated: