在 HTTP 协议中,301 和 302 都是重定向状态码,主要区别在于语义深度、缓存策略和 SEO 影响。
一、核心定义
- 301 Moved Permanently (永久重定向):资源已永久移动。浏览器会强缓存重定向结果,SEO 权重会转移至新 URL。
- 302 Found (临时重定向):资源暂时移动。浏览器默认不缓存,SEO 权重保留在旧 URL。
二、关键维度对比
| 特性 | 301 (永久重定向) | 302 (临时重定向) |
|---|---|---|
| 重定向性质 | 永久性转移 (Permanent) | 临时性转移 (Temporary) |
| 浏览器缓存 | 强缓存 (甚至无需网络) | 默认不缓存 |
| SEO 权重 | 转移至新 URL | 保留在旧 URL |
| 工程纠错 | 极难 (需用户清理缓存) | 极易 (随时撤销) |
三、延伸:303 与 307
为了解决浏览器在 302 重定向时可能将 POST 误改为 GET 的歧义,HTTP 1.1 引入了:
- 303 See Other:明确强制重定向后使用 GET。常用在“提交订单后跳转到成功页”。
- 307 Temporary Redirect:严格不允许修改请求方法。若原请求是 POST,重定向后仍必须是 POST。
总结
301 是 “搬家”,户口也迁走;302 是 “出差”,过两天还回来。域名迁移用 301,临时维护用 302。