内容相同、响应头不同,通常不会让百度直接判定“这是两个不同页面”,但会改变你对抓取、缓存、规范化以及旧内容退场节奏的判断。最需要先分清的是:差异来自状态码、缓存指令还是内容协商,因为这三类响应头对应完全不同的处理动作。下面以你手里一个“正文仍可用、但旧系统或旧合作关系需要退出”的页面为例,逐步转成可执行方案。
拿一个页面做基准,复制出两个访问路径,正文、标题、内链都保持一致,只让响应头不同。这样做的目的不是模拟百度,而是让你在排查时能确认“变化只来自响应头”,而不是模板、参数或渲染差异混在一起。
需要记录的响应头至少包括:
HTTP状态码:200、301、302、404、410分别代表不同语义,不能混用。Cache-Control与Expires:决定中间缓存和客户端缓存保留多久。Vary:如果按User-Agent或Accept做内容协商,缺少或写错Vary会让同一URL返回不同版本。Content-Type与Content-Encoding:影响解析起点,编码声明错会让正文不可读。Last-Modified与ETag:用于判断资源是否变化,和“内容是否相同”不是一回事。动作上,先抓取基准页和对比页的响应头,保存为两份文本。结果是:你能立刻排除“正文相同所以响应头无所谓”的误判,因为后续所有判断都建立在“差异项已知”之上。
如果旧页面需要退出,但其中一部分内容仍有价值,状态码的选择会直接影响百度对旧URL的处理判断。常见取舍如下:
这里有一个关键边界:robots.txt的抓取限制不等于可靠的索引移除。如果你用robots.txt挡住旧目录,百度可能无法抓取页面来看到404或410,旧索引结果反而可能保留更久。因此,退场时优先让页面可被抓取并返回明确状态码,而不是先屏蔽。
假设一个旧活动页需要下线,其中报名须知仍有价值。你可以把报名须知迁移到新页面,旧活动页301到新页面;如果旧活动页整体无价值,直接返回410。动作结果是:前者保留价值部分的入口,后者让旧地址明确退场。下一步再观察百度是否仍展示旧标题或旧摘要,而不是立刻断定处理失败。
即使正文相同,Cache-Control不同也会让不同访问者拿到不同时间的副本。如果旧页面设置了长期强缓存,你更新正文后,用户和抓取端可能仍看到旧版本。这时你会误判为“百度没更新”,实际是缓存还没过期。
可执行动作:把旧页面的Cache-Control改为较短缓存或no-cache,再请求一次同一URL,确认响应头中的缓存指令已变化。结果是:你区分了“内容没更新”和“缓存没刷新”这两种原因。下一步才是检查百度抓取到的版本,而不是反复提交同一URL。
注意,缓存头只影响副本保存时间,不直接决定收录。它影响的是你排查时的证据是否可信。
如果响应头里有Vary,说明同一URL可能按请求头返回不同内容。例如按User-Agent区分移动端和桌面端,或按Accept-Encoding区分压缩版本。此时“页面内容相同”这个前提可能只在某一种请求下成立。
判断顺序可以这样走:
Vary缺失,缓存可能把移动端版本返回给桌面端,导致你看到的内容和实际抓取内容不一致。动作结果是:你能判断差异是“同一内容的不同编码”还是“同一URL的不同页面”。前者通常不需要退场处理,后者需要考虑规范化或分URL管理。下一步再决定是否保留、合并或重定向。
回到你手里的旧资料或旧页面,可以按以下顺序处理:
最后要说明的是:请求量下降或抓取量归零,不能单独证明退场处理正确。它也可能是抓取预算转移、缓存未刷新或站点整体调整造成的。判断时要把响应头差异、状态码语义和实际抓取证据放在一起看,再决定下一步是继续观察、调整重定向目标,还是对剩余有价值内容单独保留。