302 redirect (Found)
The resource is temporarily at a different URL. Clients should keep using the original URL for future requests.
How Google handles a 302
Google treats a 302 as a weak signal that the target should be canonical, and usually keeps the original URL in its index. If a 302 stays in place for a long time, Google may start treating it like a permanent redirect. Browsers do not cache a 302 unless caching headers allow it.
Use a 302 for
- Short-lived promotions or seasonal pages
- Maintenance or out-of-stock pages you will reverse
- Geo or language routing where the original URL should stay indexed
- Login flows ("please sign in, then come back")
Don’t use it for
- Permanent moves and migrations: use 301 or 308
- Redirecting after a form POST when you need the method kept: use 307; to force a GET, 303 states it explicitly
What happens to a POST
A browser sends POST /checkout with a form body. The server answers with…
Temporary, method may change. Same historical rewrite as 301: browsers follow a POST→302 with a GET. That accident is why 303 and 307 were created.
Setting up a 302
Apache (.htaccess)
Redirect 302 /sale /summer-sale-2026Nginx
location = /sale { return 302 /summer-sale-2026; }vercel.json
{ "redirects": [{ "source": "/sale", "destination": "/summer-sale-2026", "permanent": false }] }Netlify _redirects
/sale /summer-sale-2026 302Need rules for a whole list of URLs? The redirect rule generator writes them for Apache, Nginx, Vercel and Netlify.
Check that it works
Questions
Is a 302 bad for SEO?
No, when the move really is temporary. It becomes a problem when a permanent move is done with a 302, because Google may keep showing the old URL and the new one takes longer to be treated as canonical.
What is the difference between 302 and 307?
Both are temporary. A client may change a POST to a GET when following a 302 (historically, browsers do); 307 forbids changing the method or body.
Why do frameworks default to 302 or 307?
A temporary redirect is the safer default because browsers do not cache it. Set permanent explicitly when the move is permanent.
Other codes: 301 · 303 · 307 · 308 · 301 vs 302