结论先说:在360收录的判断里,响应头不是装饰,它会影响抓取端对“这个URL是否值得保留、是否应替换成另一个URL、是否要重新抓取”的处理。内容相同但响应头不同,常见于旧系统迁移、旧合作关系退出、多域名并存等场景。此时不能只看页面文字是否一样,而要先确认响应头表达的是“同一资源的另一种返回方式”,还是“这个URL正在退出”。
假设某站点有一批旧内容页,正文与新版页面几乎一致,只是旧页由一台旧服务器返回。运维在旧服务器上加了Cache-Control: no-store,并把Content-Type的字符集从utf-8改成了gb2312,但没有改正文,也没有加跳转。这个例子只用于说明判断方法,不是真实项目结论。
这时如果只看“页面内容相同”,很容易得出“不用处理”的结论。但抓取端看到的信号已经变了:字符集声明与正文实际编码不一致,可能造成解析异常;no-store会让中间缓存与部分抓取策略更谨慎。于是原本可以正常参与360收录的URL,可能被抓取端视为不稳定资源,进而影响后续判断。
旧内容要退出时,响应头通常对应三种不同意图,判断依据也不同:
503并带Retry-After,表达“稍后再来”。它适合维护窗口,不适合长期退出。410,表达“这个URL不再提供内容”。它比404更明确,但前提是确认该URL确实不再需要。301并带Location,表达“资源已迁移”。它适合旧页仍有价值、只是换了地址的情况。如果响应头写的是301,但正文仍返回旧内容,抓取端会面对互相矛盾的信号;如果响应头写的是200,但X-Robots-Tag里带了noindex,那内容相同也不代表会被保留。这里的关键不是“哪个响应头更好”,而是它和你的退出意图是否一致。
面对旧内容退出,第一步不是删页面,而是对目标URL做一次响应头核对,至少记录状态码、Location、X-Robots-Tag、Content-Type和缓存相关字段。动作的结果会直接决定下一步:
301且Location指向仍然有价值的新页,下一步是确认新页可访问、内容对应,而不是继续保留旧页。410或404,下一步是确认旧页是否还有外部链接或用户需求;有则考虑改为跳转,无则让它自然退出。200但带了noindex,下一步要判断这是不是误加。内容相同却带noindex,通常意味着该URL不应再作为收录候选。这个动作的意义在于:它把“内容是否相同”降级为参考项,把“响应头是否与退出意图一致”升级为决定项。修正响应头之后,如果抓取量或请求量出现变化,也不能单独证明处理正确,还要结合日志中的状态码分布、新URL的抓取情况一起看。
具体来说,会变的判断包括:
200且正文相同,抓取端可能需要在两者之间做选择;如果其中一个返回301,判断就变成“旧地址是否已退出”。410表达永久退出,301表达替换,503表达临时不可用。三者对应的保留策略完全不同。no-store、no-cache等缓存头会影响抓取端对资源新鲜度的判断,但不等于一定会重新抓取。Content-Type里的字符集与正文编码不一致时,解析结果可能出错,这时“内容相同”只是表面相同。需要补充的是,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。响应头能表达退出意图,但它不是唯一依据;如果旧页已经不被抓取,还要确认是响应头导致,还是链接、站点结构或抓取预算变化导致。
旧内容退出不等于全部删除。判断依据可以是:该URL是否还有外部链接、是否还有用户直接访问、是否对应仍在售或仍被引用的信息。如果答案是有,优先用301把价值传递到新页;如果答案是没有,且确认不再提供内容,再用410让它退出。
对于内容相同但响应头不同的页面,最稳妥的顺序是:先核对响应头与退出意图是否一致,再修正矛盾项,最后才决定保留、跳转还是移除。这样做的结果是,下一步的抓取和收录判断才有可核对的基础,而不是把“内容一样”当成不处理的理由。