302 重定向是一个 HTTP 状态码,用来告诉浏览器「这个 URL 暂时位于别处」。它适用于原 URL 将来可能恢复的场合,或者希望准确统计点击的场合。
302 与 301 在实务上最大的区别在于浏览器的缓存行为。301 会让浏览器记住重定向目标,下次直接访问;而 302 每次都会向服务器查询。这一性质会直接影响短链接服务的设计。如果希望每次点击都经过服务器,选择 302 就更容易完整获取点击数、访问来源、设备类型等数据,而且之后更换跳转目标时,下一次访问就会生效。
从 SEO 的角度看,302 会向搜索引擎发出「希望继续收录原 URL」的信号。因此,如果对永久性的 URL 迁移一直使用 302,就会出现新 URL 迟迟无法被收录的问题。Google 关于重定向的官方文档说明,临时性的重定向会在搜索结果中显示原页面,并且不会被当作「应把跳转目标视为规范 URL」的信号(截至 2026 年 8 月)。因此,永久性的迁移使用 301 或 308 更为可靠。
在 HTTP/1.1 的规范上,302 对请求方法的变更存在含糊之处。问题是用 302 重定向 POST 请求时,有些浏览器会把它转换成 GET。为了消除这种含糊,后来定义了 307 重定向 (保持方法的临时重定向)。
| 对比项 | 301 重定向 | 302 重定向 |
|---|---|---|
| 表示的含义 | 资源已经永久移动到新地址 | 资源只是暂时位于新地址,原始 URL 仍然有效 |
| 浏览器缓存 | 会被缓存,之后直接访问目标地址 | 不会被缓存,每次访问都经过服务器 |
| 点击统计 | 第二次以后不再经过服务器 | 每次点击都经过服务器,可以精确记录点击次数、来源地区和设备类型 |
| 搜索引擎收到的信号 | 希望收录新的 URL | 希望继续收录原来的 URL |
| 适用场景 | 永久性的 URL 迁移 | 需要逐次统计点击,或今后可能更换跳转目标的场合 |