The client needs to do something else to get the resource. Usually harmless, but a redirect chain that wasn't there before can indicate a misconfiguration.
| Code | Meaning | When you see it |
|---|---|---|
| 301 Moved Permanently | Resource has a new home; cached by browsers | Old URLs redirecting to new ones |
| 302 Found | Temporary redirect | Login flows, A/B testing |
| 304 Not Modified | Client's cached copy is still good | Conditional GETs with If-Modified-Since |
| 307 Temporary Redirect | Like 302 but preserves HTTP method | Modern temporary redirect |
| 308 Permanent Redirect | Like 301 but preserves HTTP method | Modern permanent redirect |
Operational note: A spike in 301s/302s where you didn't expect them often means TLS/SSL misconfiguration (HTTP-to-HTTPS upgrade loop) or a CDN cache rule that's redirecting unexpectedly.