如果两个地址返回的正文完全一样,只有响应头不同,搜索引擎仍可能把它们当成两个独立结果处理。响应头里的 Content-Type、Vary、X-Robots-Tag、Cache-Control、ETag 和重定向状态,都会改变抓取、合并与保留的判断。对旧内容、旧系统或旧合作关系要退出时,先分清哪些页面值得保留、哪些需要改写、哪些应当退出,再决定是否统一响应头。
正文相同不等于信号相同。搜索引擎在处理一个地址时,会结合响应头判断它是什么类型、能否被索引、是否与其他地址表达同一实体。容易造成分叉的字段主要有:
Content-Type 与字符集声明不一致时,解析出的文本可能不同,正文看起来一样,实际抽取结果未必一样。X-Robots-Tag 出现 noindex 时,即使页面能打开,也可能被排除在索引之外;它和 robots.txt 的抓取限制不是一回事。Vary 影响缓存与内容协商判断。若同一地址因该字段返回不同版本,抓取端可能把不同版本视为不同响应。Cache-Control 与 ETag 影响重复抓取时的校验效率,但不直接决定是否收录。Location 决定最终落地地址,内容相同但落地链不同,合并判断也会不同。这些字段里,只有 X-Robots-Tag 和重定向状态会直接改变“这个地址是否应该出现”的判断;其余字段更多影响抓取与解析是否稳定。排查时应先确认地址最终返回的状态码和索引指令,再讨论内容重复问题。
旧内容、旧系统或旧合作关系需要退出时,不能只凭“正文相同”就批量处理。可先按下面三种前提分类:
取舍的关键不是响应头本身,而是这个地址是否还需要被用户或外部链接找到。需要被找到的,统一响应头;不需要被找到的,退出并让状态码表达清楚。
假设旧系统保留 /old/page,新系统使用 /new/page,两者正文逐字相同。旧地址返回 X-Robots-Tag: noindex,新地址没有该字段;两个地址都能正常打开,也都没有互相指向的规范标签。
此时可能出现的情况是:新地址被正常处理,旧地址因 noindex 被排除;但如果旧地址有外部链接,链接信号仍可能落在旧地址上,而旧地址又不参与索引,价值就被浪费。处理动作可以是:确认旧地址是否还有保留必要。若没有,让旧地址 301 到新地址,并移除 noindex;若必须保留旧地址,则给它加上指向新地址的规范标签,并让两个地址的索引指令一致。
这个动作的结果会直接影响下一步:如果旧地址仍返回 noindex 且没有规范指向,后续再提交站点地图也不会改变旧地址被排除的判断;站点地图不保证收录,它只帮助发现地址。反过来,如果旧地址改为 301,后续观察重点就变成新地址是否稳定返回、是否被正常处理,而不是旧地址本身。
不要只看“抓取量下降”或“某个地址没出现”就下结论。请求量、抓取量或某项统计归零,也可能来自抓取预算调整、外部链接变化、服务器临时不可用或站点整体改版,不能单独证明响应头处理正确。
可区分的原因至少包括:
X-Robots-Tag 是否与页面内的 robots 元标签冲突。验证时先固定一个假设,再改变一个变量。例如只移除旧地址的 noindex 并加上 301,观察新地址的抓取与处理是否变化;不要同时改规范标签、站点地图和内部链接,否则无法判断是哪一项起了作用。不同搜索引擎对响应头的支持情况须分别核查,尤其是指令冲突时的优先级,不能用一个平台的表现推断另一个平台。
退出旧内容时,常见误区是把“不再需要”直接等同于“用 robots.txt 挡住”。robots.txt 的抓取限制不等于可靠的索引移除,被限制抓取的地址仍可能因外部链接出现在结果里。更稳妥的做法是:
noindex 后继续保留可访问内容。HTTPS 不保证安全无漏洞或排名,响应头统一也不保证收录或排名。它解决的是判断冲突:让同一正文不再因为响应头不同而被当成多个意图不同的地址。对旧系统或旧合作关系,先确认哪些地址还需要被找到,再决定保留、改写或退出;这一步做完,响应头统一才有明确目标。