302 是 HTTP 状态码中的一种,表示被请求的资源暂时位于另一个地址。浏览器收到这个状态码后,会自动转到新地址,但不会把它当作永久变更。
适合用在什么场景
- 内容临时调整位置,之后可能迁回原地址
- 站点维护期间,把访客引导到说明页面
- 按条件把部分访客引导到不同版本,用于对比测试
这些场景的共同点是:变化是暂时的、可回退的。如果地址变更本身是长期决定,就应当使用表示永久跳转的状态码。
与 301 的区别
两者在用户感知上几乎一样,差别在语义:301 表示永久移动,搜索引擎会把原地址的权重与收录转移到新地址;302 表示临时移动,搜索引擎不会做这种转移,仍会保留原地址。
正因为如此,用错状态码会带来直接后果:本该永久迁移的地址用了 302,权重不会转移,新页面的表现长期起不来;只是一次临时调整却用了 301,则可能让搜索引擎提前放弃原地址。
需要说明的是,302 并不会把原地址的权重传递到新地址。选它的理由应当是“变化是临时的”,而不是出于保留权重的考虑。
怎么设置
设置重定向的途径主要有两类:在服务器层面通过配置文件添加跳转规则,或在程序代码中直接返回对应状态码并指定目标地址。前者适合批量、规则化的跳转,后者适合与业务逻辑相关的跳转。
不同服务器软件与开发语言的写法差异较大,建议参照各自的官方文档操作,避免混用示例导致规则冲突。
几点注意事项
- 避免链式跳转:A 跳 B、B 又跳 C,会拖慢访问并影响抓取
- 确认目标地址有效,否则访客会落到错误页面
- 设置完成后实际访问一次,确认跳转方向正确
- 把临时跳转与永久跳转分开记录,便于后续清理
