响应头不同,最先影响的是“这份内容该不该被当成同一个版本处理”的判断,而不是立刻决定收录结果。若两个地址返回的正文几乎一致,但一个带 Content-Type: text/html; charset=utf-8,另一个带 Content-Type: application/json,或者一个带 X-Robots-Tag: noindex、另一个不带,那么保留、改写还是退出这条抓取路径,取决于你希望百度把哪个地址当作可索引的 HTML 页面。
同一份正文配不同响应头,常见差异可以归为三类,每类对应的判断不同。
Content-Type 是 text/html 还是 application/json、text/plain。如果正文本身是完整 HTML,却用非 HTML 类型返回,抓取端可能不会按页面解析。此时优先改回 HTML 类型,再谈提交。X-Robots-Tag: noindex,另一个不带。页面正文相同,但带该头的地址不应被当作可索引版本保留。若两个地址都对外可见,需要决定哪个作为规范版本,并让另一个退出索引路径,而不是只改页面里的 meta 标签。Vary、Cache-Control、ETag 不同,可能让同一地址在不同请求下返回不同头。此时先确认抓取端实际拿到的是哪一组头,再判断正文是否真的相同。这三类差异里,只有第一类可能直接阻断页面解析,第二类直接影响是否允许索引,第三类更多影响你能否稳定复现问题。
面对“正文相同、响应头不同”,不要默认保留两个地址。可按下面条件取舍。
只有当两个地址服务不同角色,且其中一个明确不参与索引时,保留才有意义。例如一个给前端异步请求返回 JSON,另一个给浏览器返回 HTML。此时应让 JSON 地址稳定返回非 HTML 类型,并确保它不被当作页面提交;HTML 地址承担索引职责。若两个地址都返回 HTML 且正文相同,保留双地址通常只会制造重复判断。
当两个地址本应表达同一页面,只是历史配置或中间层导致响应头分叉时,改写成立。动作是让同一路径在相同请求条件下返回一致的 Content-Type 和索引指令,并检查 CDN、反向代理或应用层是否覆盖了源站头。改完后,下一步不是立刻重复提交,而是先核对抓取端拿到的头是否已稳定一致。
当某个地址返回 X-Robots-Tag: noindex,或内容类型长期不是 HTML,而你又无法让它承担索引职责时,应把它从站点地图和内部链接中退出,避免继续把抓取引向无效路径。退出不等于删除数据,而是不再把它当作可索引页面维护。
多个角色对“页面是否相同”有不同理解时,争论通常来自各自看到的响应头不同。把分歧转成可核对项目,可以按以下顺序做:
Content-Type、X-Robots-Tag、Vary。假设某站有两个地址 A 和 B,正文相同。A 返回 text/html 且无 noindex,B 返回 text/html 但带 X-Robots-Tag: noindex。若团队希望 A 作为唯一索引版本,动作是让 B 退出站点地图和内部链接,并确认 B 的头稳定不变;下一步观察抓取记录中 B 的请求是否下降、A 是否成为主要被抓取地址。这里不能把“B 请求下降”单独当作处理正确的证明,因为下降也可能来自抓取预算调整、链接移除或抓取频率自然波动。
响应头改完后,常见误判是把某个统计归零当作成功。需要保留其他解释:
因此,判断依据应落在“抓取端实际拿到的响应头是否与期望一致”上,而不是落在单一请求量或收录数量上。若你无法确认百度抓取端当前拿到的头,先解决可复现的请求记录,再决定保留、改写还是退出。