响应头不同,首先影响的是抓取端和中间缓存对“这个页面是否还有必要再取一次”的判断,而不是可见正文本身。若两个地址返回的正文一致,但一个带 Cache-Control: no-store,另一个带较长的 max-age,后续的抓取频率、缓存复用和链接权重传递路径都会出现分叉。判断内链外链时,应先确认响应头差异属于“有意分流”还是“配置漂移”,再决定是统一头部还是保留差异。
如果同一内容有两个可访问地址,其中一个响应头明确禁止存储,另一个允许公共缓存,那么内链指向哪一个、外链从哪个地址进入,会得到不同的抓取节奏。禁止存储的地址每次访问都可能触发回源,抓取预算被反复消耗;允许缓存的地址则可能被中间节点直接命中,抓取端看到的是缓存副本而非源站实时状态。
选择依据可以简化为:当两个地址都返回 200 且正文一致,但缓存指令相反时,优先统一头部,而不是继续用内链把权重分散到两个地址。实施动作是抓取两个地址的完整响应头,对比 Cache-Control、Vary、Content-Encoding 和状态码,确认差异是否只来自缓存层。若差异只出现在缓存层,下一步应检查回源请求是否一致;若回源也不一致,则要回到应用配置层处理。
例外是:其中一个地址本就是临时预览或带鉴权的内部入口,不应被外链引用。此时保留差异是合理的,但内链不应指向该地址,外链也不应把它当作正式落地页。
正文相同但响应头不同,还可能表现为一个地址直接返回 200,另一个先返回 301 或 302 再落到相同内容。此时判断重点不是正文,而是重定向链的长度和规范信号是否一致。若内链指向跳转地址,每次抓取都要多走一跳;若外链指向最终地址,权重路径更短。两种选择成立的条件不同:
Link: rel="canonical" 与页面内规范标签指向不同地址,抓取端可能收到矛盾信号,此时不应继续增加任一地址的内链。实际动作是抽取两个地址的响应头,记录状态码、Location、Link 和页面内规范标签,做一张对照表。若对照后发现规范信号冲突,下一步是修改应用输出,而不是调整内链锚文本。锚文本再精确,也无法抵消规范信号矛盾带来的判断分歧。
内链和外链的作用路径不同。内链主要影响站内抓取路径和页面间关系,外链主要影响外部入口和引用来源。当同一内容存在两个响应头不同的地址时,内链可能把抓取端引向不可缓存地址,外链可能把用户和抓取端引向可缓存地址,两边看到的页面状态不一致。
假设一个站内栏目页同时可通过带查询参数的地址和干净地址访问,正文相同,但带参数地址返回 Cache-Control: no-store,干净地址返回 max-age=3600。若内链仍指向带参数地址,抓取端每次都要回源,而外链指向干净地址时可能命中缓存。此时应把内链统一到干净地址,并确认带参数地址是否仍需保留。若保留,应给它设置与干净地址一致的缓存策略,或明确让它返回规范信号指向干净地址。
这个例子的数字只用于说明比较方法,不代表任何实际站点的抓取频率或缓存命中率。判断依据是响应头是否一致、规范信号是否一致,而不是某一次抓取量或请求量的升降。请求量归零也可能来自抓取端调度变化、屏蔽规则调整或统计口径变化,不能单独证明头部处理正确。
必须统一的情况:两个地址都面向公开访问、都返回 200、正文相同,但缓存指令或规范信号互相矛盾。此时继续保留差异,会让内链和外链把抓取端引向不同状态,后续的收录判断和链接关系判断都缺少稳定前提。
可以保留差异的情况:一个地址是登录后入口、预览地址或仅对特定来源开放的接口,另一个是公开正式地址。此时差异是访问控制的一部分,不应通过内链或外链把受限地址暴露为正式入口。保留差异时,要确保公开地址有明确的规范信号,且内链不指向受限地址。
实施顺序建议如下:
Vary、Link 和内容类型。这个顺序的关键在于:先确认响应头和规范信号,再调整内链外链。反过来做,容易把抓取端引向一个头部仍不稳定的地址,后续再改内链只会增加反复。若站点同时使用站点地图,站点地图中的地址也应与最终地址一致;但站点地图不保证收录,它只是候选列表,不能替代响应头和规范信号的核对。
响应头不同并不必然意味着页面会被区别对待。若差异只体现在 Date、Server 或无关的追踪头,且缓存指令、状态码、规范信号一致,那么对抓取和链接判断的影响可以忽略。真正需要处理的是会影响缓存复用、重定向路径和规范信号的头。
另外,robots.txt 的抓取限制不等于可靠的索引移除。若两个地址中有一个被 robots.txt 限制抓取,不能据此认为该地址一定不会出现在索引中,也不能把内链改到受限地址来“隐藏”它。正确做法仍是统一公开地址的响应头和规范信号,并让内链外链指向同一个最终地址。HTTPS 也不保证安全无漏洞或排名,它只是传输层条件,不解决响应头差异带来的判断分叉。
最终判断标准是:两个地址是否面向同一公开内容、是否返回一致的缓存与规范信号、内链外链是否指向同一个最终地址。若这三点都一致,响应头中的无关差异可以保留;若其中任何一点不一致,应先统一再分配内链外链,否则后续的抓取和链接判断都会建立在不稳定的前提上。