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 库)存在缺口。