如果两个地址返回的正文一模一样,但响应头不同,百度在抓取和索引阶段可能把它们当成不同对象处理,也可能只保留其中一个。判断的关键不是“内容相同就必然合并”,而是先看响应头给了什么信号,再决定下一步是保留、合并还是放弃其中一个地址。
手上没有日志和后台权限时,仍然可以从一个页面开始。选一个正文相同、响应头不同的地址对,例如带参数版本和去参数版本,分别用同一台设备、同一网络、同一时刻请求,只记录状态码、Content-Type、Content-Length、Cache-Control、Vary、Location 和 X-Robots-Tag 这几项。不要先看页面渲染结果,先把响应头抄下来。
这一步的目的是把“相同内容”拆成可比较的字段。假设 A 地址返回 200 且 Content-Type 为 text/html,B 地址返回 200 但 Content-Type 为 application/octet-stream,那么百度即使读到相同字节,也可能按不同类型处理,后续是否索引、如何展示都不再由正文单独决定。
正文相同但一个返回 200、另一个返回 301 或 302,百度会优先跟随跳转目标,而不是把两个地址当作同内容副本。若跳转链最终回到同一地址,可能形成循环;若跳到第三个地址,则原先比较的两个地址都不一定是最终保留对象。没有权限查看日志时,只能确认跳转关系,不能据此断定哪个地址已被收录。
Content-Type 决定响应体按什么类型解析。两个地址正文相同,但一个声明为 HTML、另一个声明为纯文本或下载类型,百度可能只把前者当作可索引网页。Vary 字段则影响缓存和内容协商:如果 Vary 包含 User-Agent 或 Accept,同一地址对不同请求方可能返回不同内容,此时“正文相同”只对当前请求成立,不能推广到百度抓取时的响应。
X-Robots-Tag 可以在响应头层面给出 noindex、nofollow 等指令。正文相同的两个地址,一个带 noindex、一个不带,百度对前者的处理可能是不索引,而不是因为内容重复才不索引。Cache-Control 不直接决定索引,但会影响中间缓存是否把某个版本交给百度,从而改变百度实际看到的响应。
完成一次对比后,按下面顺序处理:
这些动作的结果会直接改变下一步:统一 Content-Type 后,如果百度仍分别抓取两个地址,问题可能不在类型判断,而在链接入口或站点地图同时提交了两个地址;如果只抓取其中一个,则说明响应头差异至少影响了抓取选择。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。响应头对比只能说明百度可能看到什么,不能单独证明某个地址已经被收录或已经被移除。请求量、抓取量或某项统计归零,也可能来自抓取预算调整、入口链接变化或统计口径变化,不能只凭一个数字下结论。
没有日志和后台权限时,最小动作是:固定一个地址对,记录完整响应头,用同一条件重复请求三次,确认哪些字段稳定、哪些字段变化。然后只修改一个字段,例如把 B 地址的 Content-Type 改为 text/html,再重复同样请求,看响应是否收敛为一致。
这个动作能帮助判断响应头差异是否稳定存在,但不能推出百度一定已经合并或一定没有收录。要确认收录状态,仍需要百度搜索资源平台中该站点的验证权限,或至少能看到百度抓取该地址时的实际请求记录。若这些都不具备,结论只能停留在“响应头存在差异,且差异可能影响解析与索引选择”,不能进一步断言处理已经生效。