HTTP 308 Permanent Redirect
带有严格规则的永久重定向:URL 已永久迁移,请求必须原样不变地重复发送。
HTTP 308 是什么意思
HTTP 308 Permanent Redirect 是 301 保留方法版本的对应物。资源已永久迁移到 Location URL,客户端必须在不改变方法或丢弃请求体的情况下,在那里重复该请求。
这一点对 API 尤为重要:如果一个接受 POST 或 PUT 的端点发生了永久迁移,301 可能会让旧客户端悄悄地改用 GET 重试,从而丢失负载数据。308 则能保持写操作完整。
308 响应的常见原因
- 一个接受写操作的 API 端点永久迁移到了新路径或新域名。
- 基础设施层面的规范化配置(例如 Cloudflare 或负载均衡器)被设置为保留方法。
- 某个框架默认对末尾斜杠归一化使用 308(Next.js、部分 CDN)。
开发者的最佳实践
- 只要非 GET 请求可能命中旧 URL,就应选择 308 而非 301。
- 与 301 一样,应一跳直达,并长期保留该重定向。
- 确认旧的 API 客户端能够处理 308——非常古老的 HTTP 库可能不会自动跟随它。
示例响应
HTTP/1.1 308 Permanent Redirect Location: https://api.example.com/v2/upload
SEO 影响
对搜索引擎而言,308 等同于 301:都是将索引和排名信号转移到目标 URL 的永久迁移。应根据客户端而非 SEO 来选择二者。
常见问题
对 SEO 来说,308 与 301 相同吗?
是的——Google 会将两者都视为永久迁移,并将信号转移到新 URL。
什么时候必须使用 308 而不是 301?
当被重定向的请求可能是 POST、PUT、PATCH 或 DELETE,且方法和请求体必须保留时。
所有浏览器都支持 308 吗?
所有现代浏览器都支持。只有非常古老的客户端(例如 Windows 7 时代的 IE、老旧的 HTTP 库)存在缺口。