如果两个页面的正文、标题、时间戳完全一致,仅响应头不同,那么它影响的主要不是“内容是否相同”这个判断,而是百度抓取、缓存和索引时对这两个地址的处理倾向。最需要警惕的是:不能因为一个样本收录了,就推断另一个也会收录,也不能因为响应头看起来更“规范”就断定它一定更有利。
假设某站点发布一篇新闻,同时存在两个可访问地址:A 地址返回 200 OK,并带有较长的缓存时间;B 地址返回 200 OK,但缓存时间为零,且带有 Vary: User-Agent。两个地址的 HTML 正文逐字相同。此时,百度新闻收录相关的判断会出现分叉:内容层面的“重复”并没有变化,变化的是抓取端看到的行为信号。
这个假设不涉及任何真实站点数据,只用于说明决策顺序。实际动作应当是:先确认两个地址是否都能稳定返回同一份正文,再分别记录响应头,而不是直接删除其中一个地址。记录完成后,下一步才有依据决定是保留双址、做规范化,还是只保留一个入口。
缓存时间不同,意味着百度再次抓取时可能拿到旧副本或新副本。若 A 地址缓存较长,B 地址缓存为零,那么同一篇内容在两个地址上可能出现“一个更新快、一个更新慢”的假象。这时不能把更新慢直接归因于内容质量,也不能把更新快直接归因于响应头更优。合理动作是:用同一时间点分别请求两个地址,比对返回正文和响应头,确认差异是否稳定存在。若差异只在某个 CDN 节点出现,那么问题边界就不在页面本身。
Vary 响应头会让缓存和抓取端按不同请求头分别存储副本。如果 B 地址带有 Vary: User-Agent,而百度抓取时使用的 User-Agent 与普通浏览器不同,那么它拿到的可能是另一个副本。这个副本若正文相同,影响有限;若正文不同,就会从“响应头差异”升级为“内容差异”。因此,看到 Vary 时,下一步应实际用不同 User-Agent 请求,确认返回正文是否一致。只有确认正文一致,才能把问题继续归在响应头层面。
如果两个地址都返回 200,且没有 rel=canonical 或 canonical 指向不一致,百度需要自行判断哪个地址更值得保留。响应头中的缓存、编码、重定向链等信息会影响它对两个地址的抓取效率判断,但不会直接等同于收录结果。一个实际动作是:检查两个地址的 canonical 是否都指向同一个首选地址。若 canonical 一致,响应头差异通常不会改变首选地址;若 canonical 缺失或互相指向,响应头差异就会放大不确定性。
个别样本收录后,容易得出“只要响应头这样设置就能收录”的结论。这个结论在规模化时经常失效,原因有三类:
要降低误判,可以按下面顺序操作:先固定一组地址,分别记录响应头、正文哈希和 canonical;再在不同时间点重复请求,确认差异是否稳定;最后才决定是否统一响应头。这个动作的结果会直接决定下一步:如果差异不稳定,应先查 CDN 或源站配置,而不是改页面内容;如果差异稳定且正文一致,可以优先统一缓存和 canonical,再观察抓取日志中的返回码变化。
当百度新闻收录表现异常时,响应头只是可能原因之一。请求量下降、抓取量归零或某个地址未被收录,也可能来自 robots.txt 限制、站点地图未更新、URL 被其他规则拦截、内容本身时效性不足,或该地址从未获得过抓取入口。robots.txt 的抓取限制不等于可靠的索引移除;站点地图也不保证收录。因此,看到响应头不同时,不要立刻把它当成唯一变量。
更稳妥的判断方法是:把两个地址的响应头、正文、canonical、robots 状态和抓取日志字段放在同一张核对清单里。若只有响应头不同,其他字段一致,才可以把响应头作为主要怀疑对象;若还有其他字段不同,应先解决更明确的差异。这样做的结果不是保证收录,而是让下一步动作有可验证的依据,而不是在多个变量之间反复猜测。