What is a 308 redirect?
A 308 Permanent Redirect tells clients that a URL has moved for good and that the request must be replayed at the new address exactly as it was sent, method and body included. Search engines read it the same way as a 301: the new URL replaces the old one in the index.
It is the newer, stricter sibling of the 301, and you are most likely to meet it on modern hosting platforms that issue it by default.
The four redirect codes side by side
| Code | Lifetime | May change POST to GET? |
|---|---|---|
| 301 Moved Permanently | Permanent | Yes, clients are allowed to |
| 302 Found | Temporary | Yes, clients are allowed to |
| 307 Temporary Redirect | Temporary | No |
| 308 Permanent Redirect | Permanent | No |
The right-hand column is the whole reason 307 and 308 exist. When a form posts to a URL that answers 301, most browsers follow with a GET and the submitted data is lost. A 308 guarantees the POST arrives as a POST.
A 308 on the wire
$ curl -I https://example.com/old-pricing
HTTP/2 308
location: https://example.com/pricing
cache-control: public, max-age=0, must-revalidate
Like a 301, a 308 can be cached by browsers, sometimes for a long time. A mistaken one sticks in visitors' browsers after you remove it, so test new rules as temporary redirects first and switch them to permanent once you are sure.
How search engines handle it
Google's documentation lists 301 and 308 together as permanent redirects, and says a permanent redirect is a strong signal that the target should be canonical. Ranking signals follow the redirect the same way for both codes.
So for a page that has moved, there is no SEO reason to prefer one code over the other. The choice is technical.
Choosing between 301 and 308
Use a 308 when the URL receives non-GET requests that must survive the move: API endpoints, webhooks, form handlers. Framework and platform defaults also lean this way, because it is the unambiguous option.
Use a 301 when you want the widest compatibility. Every client, proxy and tool ever written understands it, while very old software may not know what a 308 is and will stop instead of following it. For a typical content site that only serves pages, that makes the 301 the safe default.
Whichever you pick, the rest of the redirect rules still apply: point each old URL straight at its final destination, avoid chains, and update internal links so they do not rely on the redirect at all.
308s and WordPress
WordPress core sends a 301 for its own permanent moves, such as old slugs and canonical URL corrections, and its redirect function defaults to 302 when no code is given. Redirect plugins mostly offer 301 and 302; that is what Hydrogen SEO's redirection manager provides, and it is enough for content URLs.
You will see 308s on a WordPress site when a layer in front of it adds them: some hosts and edge platforms use 308 for forced HTTPS or for trailing-slash normalisation. That is fine. Just make sure the edge and WordPress agree on the final form of the URL, or the two will bounce requests between them. If you write server rules by hand, our redirect rule generator turns a list of old and new URLs into Nginx or Apache syntax.
Common questions
Is a 308 redirect as good as a 301 for SEO?
Yes. Google treats both as permanent redirects and moves signals to the target in the same way. Neither has a ranking advantage.
Should I change my 301 redirects to 308?
No. There is nothing to gain for normal page URLs, and 301 has broader support in older clients. Use 308 where the request method must be preserved.
Is a 308 redirect cached?
It can be. Browsers may store permanent redirects and reuse them without asking the server again, which is why a wrong 308 keeps affecting visitors until their cache is cleared.