308 Permanent Redirect 表示目标资源有了新的永久 URL(由 Location 给出),客户端必须在不改变方法和请求体的情况下向该 URL 重新发送请求。它相当于保留请求方法的 301 Moved Permanently,正如 307 相当于保留请求方法的 302。它最早在 RFC 7238(2014 年)中提出,RFC 7538(2015 年)将其升级为正式标准,现在则是 RFC 9110 的一部分。
与 301 一样,308 可以被启发式缓存,因此浏览器会记住它,下次直接前往新 URL。当前所有浏览器、主要爬虫和常用 HTTP 库都支持 308;只有非常老旧的客户端(例如 Windows 7 上的 Internet Explorer)不支持。
响应示例
HTTP
HTTP/1.1 308 Permanent Redirect
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: /docs/
Content-Type: text/plain; charset=utf-8
Content-Length: 21
Redirecting to /docs/ SEO 与重定向检测
Google 对 308 的处理与 301 相同:将其视为“目标 URL 是新的规范 URL”的强信号,因此新 URL 会在搜索结果中取代旧 URL。当必须保留请求方法时(API、表单端点),或者所用平台默认使用 308 时,就用 308;对于普通的页面迁移,301 和 308 在 SEO 上效果相同。
Next.js 和 Vercel 等平台对永久重定向和末尾斜杠规范化使用 308。301 重定向检测会显示每一跳是永久重定向(301 或 308)还是临时重定向,URL 末尾斜杠检测则会同时测试 URL 的两种写法。
常见原因与使用场景
- 框架的永久重定向,例如 Next.js 中的
permanent: true、Vercel 重定向规则或 CDN 规则。 - 需要保留请求方法的末尾斜杠或大小写规范化。
- API 端点已永久迁移,而客户端仍在向旧 URL 发送
POST或PUT。 - 平台或代理使用 308 将 HTTP 升级到 HTTPS。