SEO 百科
302
本页目录
302
302 是服务器给出的状态码,表示请求的网址暂时搬到了另一个地址[1]。它和 301 同属 3xx 重定向,也在服务端发出,区别在生效时长上:302 声明这次跳转是临时的,原网址以后还会使用[4]。正因为带着这层意思,它不适合拿来完成永久迁移。
临时迁移的判定
302 的官方定义强调临时。RFC 把它描述为目标资源暂时位于另一个 URI,客户端以后的请求仍应回到原地址[1]。临时两个字是它的边界,越过这条边界,配置就和声明对不上了。
Google 按同样的口径分档,临时重定向会在搜索结果中显示源网页[4]。源网页就是收到跳转的那个旧地址,引擎保留它,等于告诉搜索引擎这次跳转不算搬家。
同一类里还有 303 和 307。Yandex 只建议在两种场合使用临时跳转,一是页面 A/B 测试期间,二是站点维护期间[3]。A/B 测试指把两个版本分别展示给不同用户来比较效果,维护则是服务器暂时不能提供原内容。这两件事都有明确的结束时间,过几天就要回到原地址。
引擎的处理方式
抓取工具遇到 302 同样会跟到目标地址,差别仍然出在索引系统的解读上。
Google 的处理写在状态代码文档里,索引编制流水线把 302 当作弱信号[5]。弱信号意味着它不构成规范网址的指示,规范网址指搜索引擎在多个版本里选定的正式地址。跳转目标如果另有别的规范信号,仍然可能被收录;否则旧地址继续留在结果里[4]。
跳转过程中收到的内容同样会被忽略,只有最终目标的内容参与处理[5]。这一点和 301 一样,差别只在信号强弱。
对百度的抓取而言,多跳会带来另一类麻烦。百度在抓取诊断文档里说明,跳转后的链接超长,或者连续跳转次数超过五次,就会发生重定向错误,导致抓取失败[6]。临时跳转常常夹在多层规则里,链条长度容易失控。
该用与不该用的情况
适合使用 302 的场合:
不该使用 302 的场合:
- 换域名、改目录结构、合并站点。这类改动要完成地址替换,必须使用永久跳转[2]。
- 长期把旧页面指向新页面,并指望它完成替换。信号弱,替换很难发生。
- 只想让页面暂时不参与排序。跳转不是屏蔽手段,需要屏蔽时改用
noindex。
服务器配置示例
Nginx 用 return 302 处理单页。整段路径需要临时改写时,改用 rewrite 并带上 redirect 标志。
# 维护期间把整个栏目临时指到公告页
location /shop/ {
return 302 https://www.example.com/maintenance.html;
}
# 单个商品页临时下架
location = /shop/item-100.html {
return 302 https://www.example.com/shop/;
}
Apache 的 Redirect temp 对应 302,需要按正则匹配时改用 mod_rewrite。
# 维护期间把整个栏目临时指到公告页
Redirect temp /shop/ https://www.example.com/maintenance.html
# 单个商品页临时下架
RewriteEngine On
RewriteRule ^/shop/item-100\.html$ https://www.example.com/shop/ [R=302,L]
规则里写清结束条件,配上一份恢复计划。临时跳转挂上几个月,配置和声明就会一直对不上。
常见误用
第一种是用 302 做永久迁移。这是迁移里最常见的一处失手。信号弱,旧网址会长期留在搜索结果里,新网址迟迟接不到位[5]。
第二种是让 302 长期挂着。临时跳转本应有结束时间,挂了半年以上,它事实上变成了永久跳转,但传递的信号仍然是弱的那一档。
第三种是把 302 当成屏蔽工具。跳转只是把访问者送走,旧地址还在索引里,要阻止收录得用 noindex 一类指令。
第四种是把临时跳转叠成链条。http 跳 https、不带 www 跳带 www、再加上路径变更,三层规则串起来就超过了百度允许的跳数,抓取会直接失败[6]。
附录
参见
参考资料
官方(境外)
- 《RFC 9110 : STD 97 : HTTP Semantics》,RFC 编辑部,2022-06。
- 《Processing redirects》,Yandex Webmaster。
- 《HTTP status codes reference》,Yandex Webmaster。
- 《重定向和 Google 搜索》,Google 搜索中心。
- 《HTTP 状态代码以及网络连接错误和 DNS 错误对 Google 搜索有何影响》,Google 搜索中心。
官方(国内)
- 《平台工具使用手册(抓取诊断)》,百度搜索资源平台,2020-08-14 更新。
外部链接
无。