301 vs 308: Which Permanent Redirect Should You Use?
If you've been writing 301 Moved Permanently for years and you're suddenly seeing 308 in your Next.js or modern framework output, you're probably wondering: what changed, and does it matter? Short answer: yes, a little. Here's the full picture.
Both are permanent. One preserves the method.
301 and 308 both tell the client "this resource has permanently moved, go here instead." The only behavioral difference is what happens with the HTTP method.
- 301: the spec discourages changing the method, but in practice many clients downgrade POST requests to GET. This was codified as reality in RFC 7231.
- 308: the spec requires the client to preserve the original method. A POST stays a POST. Introduced in RFC 7538 specifically to have a "permanent, method-preserving" option.
The decision tree
| Scenario | Pick | Why |
|---|---|---|
| Moving an HTML page to a new URL | 301 | GET-only, widest compatibility, every tool understands it |
| HTTPS migration | 301 | Same as above; browsers and search engines handle it perfectly |
| www ↔ non-www canonical | 301 | Safe default, cacheable |
| Permanent API endpoint move (POST matters) | 308 | Must not downgrade the method |
| Form submission URL permanently moved | 308 | POST body must be replayed |
Next.js permanent: true | 308 | Framework default — you get it whether you want it or not |
Search engine handling
Both Google and Bing treat 301 and 308 the same way for indexing and link equity. John Mueller has said this multiple times on Twitter and in Search Console documentation. From an SEO perspective, you can use either.
What does matter for SEO:
- Pick a canonical form and redirect consistently.
- Keep the redirect chain to exactly one hop.
- Don't flip back and forth between 302 and 301/308 — search engines get confused about whether the move is real.
Browser support
308 has been supported by every major browser since around 2016 (Chrome 51, Firefox 41). If you're targeting modern browsers, use either. The exception is some older corporate proxy servers and ancient HTTP libraries — if your audience includes either, stick with 301 to be safe.
What about 302 and 307?
The "temporary" counterparts follow the same pattern:
- 302 Found: temporary, may change method (like 301).
- 307 Temporary Redirect: temporary, must preserve method (like 308).
So the full matrix is:
| Method may change | Method must be preserved | |
|---|---|---|
| Permanent | 301 | 308 |
| Temporary | 302 | 307 |
Implementation examples
Nginx
# 301 permanent
return 301 https://example.com$request_uri;
# 308 permanent, preserves method
return 308 https://api.example.com$request_uri;Apache
# 301
Redirect 301 /old /new
# 308 via RewriteRule
RewriteRule ^old/(.*)$ /new/$1 [R=308,L]Node.js / Express
app.all('/old', (req, res) => {
res.redirect(308, '/new') // preserves POST body
})Next.js
// next.config.js
module.exports = {
async redirects() {
return [
{ source: '/old', destination: '/new', permanent: true }, // emits 308
]
},
}Bottom line
For content URLs (pages, posts, images), 301 is still the right default. Widest compatibility, zero ambiguity, every crawler in the world understands it.
For API endpoints or any URL that accepts POST/PUT/DELETE and you're moving it permanently, use 308. That's the one case where the distinction actually matters — you don't want your clients silently dropping their request body.
And if you're using a framework that defaults to 308 (like Next.js), don't fight it. It won't hurt your SEO, and it's the more correct semantics for a permanent redirect. Just verify with Redirect Check that the chain is clean and your tooling handles 308 the way you expect.
지금 리디렉션을 검사하세요
잘못된 리디렉션이 SEO에 피해를 주지 않도록 하세요. 무료 도구로 링크를 즉시 감사하세요.
How to Fix ERR_TOO_MANY_REDIRECTS: A No-BS Troubleshooting Guide
Stuck in a redirect loop? Learn how to diagnose and fix the ERR_TOO_MANY_REDIRECTS error with practical solutions for WordPress, Cloudflare, Apache, and Nginx.
Setting Up Redirects in Cloudflare: A No-Nonsense Guide for 2025
Master Cloudflare redirects with this practical guide. Learn Single Redirects, Bulk Redirects, common pitfalls, and real troubleshooting tips that actually work.
Mobile-First Redirects: How to Optimize for Core Web Vitals in 2025
Learn how redirects impact Core Web Vitals and mobile performance. Practical strategies to maintain LCP, INP, and CLS scores during redirects.