如果两个地址返回的正文完全一样,但一个带 X-Robots-Tag: noindex、另一个没有,Google 会把它们当作不同响应来对待:带 noindex 的那个可能被排除出索引,另一个仍可被收录。反过来,如果差异只是 Cache-Control、ETag 或 Vary,正文相同的情况下,Google 通常仍会把它们视为同一内容的不同响应版本,收录判断更多落在规范化与抓取调度上,而不是直接去重。所以先分清响应头差异属于“指令类”还是“缓存/协商类”,再决定保留、改写还是退出。
指令类响应头会直接改变 Google 对该 URL 的处理意愿。X-Robots-Tag: noindex 是最典型的一种,它作用于整个响应,不需要页面里有 meta 标签。与之相对,Cache-Control、Expires、ETag、Last-Modified 属于缓存与再验证类,通常影响 Googlebot 多久重新抓一次、是否复用已有副本,而不直接表达“不要收录”。Vary 属于内容协商类,它告诉缓存和爬虫同一 URL 可能因请求头不同而返回不同内容,这会增加抓取与规范化判断的复杂度,但本身不是收录指令。
判断动作:用 curl -I 分别请求两个地址,把响应头逐行对照,先标出是否存在 noindex、noarchive、nosnippet 这类指令。如果指令类存在差异,优先按指令处理;如果只有缓存或协商类差异,再往下看规范化信号。
当两个地址正文一致,Google 会综合 canonical 标签、内部链接、站点地图、重定向以及响应头中的信号来选择展示哪个版本。响应头本身不直接指定规范页,但会间接影响:例如一个版本带 noindex,另一个不带,带 noindex 的版本通常不会成为规范目标;一个版本因 Vary 导致抓取时返回的内容不稳定,Google 可能降低对它的信任,转而依赖更稳定的版本。
这里要避免一个常见推断:不能因为某个版本被抓取次数少,就断定它被排除。抓取量下降还可能来自抓取预算分配、站点整体响应变慢、robots.txt 限制或该 URL 已进入低频重访队列。要区分这些原因,需要同时看 Search Console 的“网页”报告、URL 检查工具的实际渲染结果,以及服务器日志中该 URL 的返回码与响应头记录。
保留适用于两个版本都仍有独立价值,且响应头差异不涉及 noindex 等排除指令。此时要做的是让规范化信号一致:两个页面互相指向同一个 canonical,或者用 301 把次要版本指向主版本。动作结果是 Google 逐步把展示集中到主版本,次要版本的抓取频率下降但不一定消失。
改写适用于旧内容仍有搜索需求,但旧系统或旧合作关系只能提供一套响应头。例如旧系统固定输出 X-Robots-Tag: noindex,而内容本身值得保留。这时不能只改页面正文,必须改响应头或把内容迁移到可控的新地址。动作结果是新地址可被收录,旧地址按退出流程处理。如果无法改动旧系统响应头,改写这条路实际上不成立。
退出适用于内容已无保留价值,或旧合作关系要求彻底下线。退出时不要只依赖 robots.txt 的抓取限制,因为它不等于可靠的索引移除:被限制抓取的 URL 仍可能因外部链接出现在结果中。更稳妥的顺序是先用 noindex 响应头让页面退出索引,确认后再做 301 或 410。动作结果是索引状态逐步变化,但具体时间取决于重新抓取节奏,不能预设固定天数。
假设旧地址 /old/page 返回 200,正文与新地址 /new/page 相同,但旧地址响应头含 X-Robots-Tag: noindex,新地址没有。此时旧地址通常不会进入索引,新地址可以。若旧地址反而被抓取得更频繁,合理解释可能是旧地址有更多外链或更早被收录,而不是 noindex 失效。下一步应检查新地址的 canonical 是否指向自身、内部链接是否已切换到新地址,以及站点地图是否只提交新地址。站点地图不保证收录,它只是发现线索之一。
如果两个地址都返回 200 且都无 noindex,只是 Cache-Control 不同,那么收录判断更可能落在 canonical 与链接信号上。此时把两个版本都保留、互相 canonical 指向同一目标,通常比直接删除一个版本更可控。若业务上必须只留一个,再做 301,并观察后续抓取与展示变化。
回到取舍本身:先确认差异属于指令类还是缓存/协商类,再决定保留、改写还是退出。保留时统一规范化信号,改写时先解决响应头可控性,退出时用 noindex 而非仅靠 robots.txt。每一步动作之后,用实际抓取与索引状态验证,再进入下一步,而不是一次性做完所有变更。