The Redirect
Fundamentals6 min read

Redirects 101: 301 vs 302 vs 308 — and why it matters

Every redirect tells browsers and search engines a story. Pick the wrong status code and you leak link equity, cache stale destinations, or break POST requests. Here is the mental model.


The three codes you actually need

A 301 says "this moved forever" — browsers cache it aggressively and search engines transfer ranking signals to the new URL. A 302 says "this moved for now" — nothing is cached long-term and the original URL keeps its equity. A 308 is the strict sibling of 301: permanent, but the request method must be preserved, so a POST stays a POST.

That last part matters more than most people think. Legacy 301/302 handling allows clients to rewrite POST to GET on the follow-up request — fine for humans clicking links, dangerous for webhooks and APIs.

  • 301 — permanent, cached, transfers SEO signals, method may change
  • 302 — temporary, not cached, equity stays on the source URL
  • 308 — permanent and method-preserving; use it for API endpoints

When a short link should NOT be permanent

Campaign links, A/B tests and seasonal targets change destinations over their lifetime. If you serve them as 301s, browsers that cached the redirect will keep sending visitors to the old target even after you update it. This is the classic "I changed the link but nothing happened" bug — and the reason rii.link serves 302 by default and lets you opt into 301/308 per mapping.

A rule of thumb

Domain migration or a URL that will never change again: 301 (or 308 if machines call it). Anything you might re-point — campaigns, bio links, QR codes printed on packaging: 302. When in doubt, start temporary; you can always upgrade a redirect to permanent, but you cannot un-cache a 301 from the world's browsers.

Written by the rii.link team.

Put it into practice.

Branded links, smart routing and honest analytics — free to start, live in minutes.