308 重定向
308 重定向是一种 HTTP 状态码(308 Permanent Redirect),用于告知浏览器和搜索引擎某个 URL 已永久迁移到新地址。与 301 重定向一样,它表示永久迁移,但有一个关键区别:在跟随重定向时,必须原封不动地保留原始 HTTP 方法(GET、POST 等)和请求体。
308 重定向是一种 HTTP 状态码(308 Permanent Redirect),用于告知浏览器和搜索引擎某个 URL 已永久迁移到新地址。与 301 重定向一样,它表示永久迁移,但有一个关键区别:在跟随重定向时,必须原封不动地保留原始 HTTP 方法(GET、POST 等)和请求体。
为什么它很重要
308 重定向在永久迁移期间将链接权重传递给新 URL,同时保留请求方法。Google 已正式确认,它对 308 重定向的处理方式与 301 重定向相同,包括 PageRank 的传递方式。从 SEO 角度看,301 和 308 都适用于永久迁移,但当涉及 POST 请求时,308 是更稳妥的选择。当搜索引擎收到 308 响应时,会随时间推移在索引中用新 URL 替代旧 URL,并把原 URL 累积的链接权重传递给新 URL。
与 301 的区别
| 属性 | 308(永久重定向) | 301(永久迁移) |
|---|---|---|
| HTTP 方法保留 | 严格保留(POST 仍为 POST) | 方法可能改变(POST 可能变为 GET) |
| 永久性 | 永久迁移 | 永久迁移 |
| 链接权重传递 | 传递给新 URL | 传递给新 URL |
| 搜索索引 | 旧 URL 由新 URL 替代 | 旧 URL 由新 URL 替代 |
| 浏览器支持 | 所有现代浏览器 | 包括旧版在内的所有浏览器 |
| 主要适用场景 | 需要保留 POST 的永久迁移 | 一般性永久迁移 |
301 重定向自 HTTP/1.0 起就在使用,所有浏览器和爬虫都支持它,但部分客户端在历史上会在跟随 301 时把 POST 请求转换为 GET。308 状态码在 RFC 7538 中定义,用以解决这一问题。对于简单的页面迁移,301 已经足够,但对于 API 端点或表单提交 URL 的永久性变更,308 更为合适。
适用场景
- 永久迁移 API 端点:在重构 REST API URL 时,处理 POST、PUT 或 DELETE 请求的端点应使用 308 重定向,以确保客户端的请求方法得到保留。
- 永久更改表单提交 URL:当注册、支付或登录表单中处理 POST 请求的 URL 被永久更改时,308 重定向可防止用户提交的数据丢失。
- 保留 POST 的域名迁移:在迁移域名的同时也迁移接收 POST 请求的端点时,308 重定向可安全转发方法和数据。
- HTTPS 迁移:在永久从 HTTP 切换到 HTTPS 时,如果你想确保 POST 请求不被转换为 GET,使用 308 而非 301 更为精确。
相关 inblog 文章
inblog 如何提供帮助
inblog 的控制台对永久重定向使用 308 状态码。