百度蜘蛛遇到重复或冲突信号时,不会自动替你判断哪个页面更重要,而是按抓取到的顺序和可验证信号做取舍。多人协作中最常见的误解是:只要在 robots.txt 里屏蔽旧页面,或者把新页面加进站点地图,百度蜘蛛就会立刻放弃旧页面、收录新页面。实际并非如此。robots.txt 只限制抓取,不等于可靠的索引移除;站点地图不保证收录;多个入口同时存在时,蜘蛛可能按内链、跳转和页面内容分别抓取,形成重复或冲突。要减少返工,需要先定位冲突类型,再按条件处理。
重复信号指同一内容或高度相似内容有多个可访问地址,例如带参数和不带参数、带斜杠和不带斜杠、移动端和桌面端各自可访问。冲突信号指不同页面给出互相矛盾的指示,例如一个页面用 noindex,另一个页面用 canonical 指向它;或者旧页面仍可访问,新页面已经上线,但内链还指向旧页面。两者的处理顺序不同:重复信号先统一地址,冲突信号先统一指令。
很多人把 robots.txt 当成删除工具。假设一个旧页面已经下线,但服务器仍返回 200,团队在 robots.txt 里写了 Disallow。结果是百度蜘蛛无法抓取该页面,也就看不到页面上的 noindex,旧地址可能继续留在索引中。正确做法取决于页面状态:如果页面确定不再使用,应让服务器返回 404 或 410;如果必须保留旧地址,应让旧地址 301 跳转到新地址;如果旧地址只是参数变体,应统一到规范地址,并在规范页面上给出可抓取的 canonical。
noindex、canonical、跳转目标是否指向同一最终地址。noindex 的页面。判断结果时,以最终可访问地址为准:如果用户和百度蜘蛛打开一个地址后,经过跳转或规范指向落到同一个页面,重复信号就会减少。如果多个地址都能直接打开且内容相同,重复信号仍然存在。
假设一个团队把产品页从旧路径迁移到新路径,旧路径保留 301 跳转,新路径可访问,但站点地图同时提交了旧路径和新路径。此时百度蜘蛛可能分别抓取两个地址。正确处理是:站点地图只保留最终可访问地址;旧路径用 301 指向新路径;新路径的 canonical 指向自身;内链全部改为新路径。如果旧路径必须保留参数形式,应让参数地址跳转到无参数地址,而不是让两个地址都返回 200。
另一个冲突是页面同时出现 noindex 和 canonical。如果页面需要被索引,不应使用 noindex;如果页面不需要被索引,canonical 不应指向一个需要被索引的页面。两者同时出现会让百度蜘蛛收到矛盾指令,最终行为取决于抓取顺序和页面可访问性,无法保证按某一方执行。
不要依赖“提交后应该会更新”这类判断。交付前逐项核对:用浏览器直接打开每个候选地址,记录状态码和最终地址;查看页面源代码中的 canonical 和 noindex;查看 robots.txt 是否允许抓取该地址;查看站点地图是否只包含最终地址。对百度蜘蛛而言,可抓取、可读取、指令一致的地址才更可能被当作规范目标。不同搜索引擎对指令的支持情况须分别核查,百度语境下应以百度可读取到的信号为准。
下一步:选一个当前存在重复或冲突的页面组,按上面的清单记录每个地址的状态码、最终地址和页面指令,先统一到一个可访问地址,再检查内链和站点地图是否还指向旧地址。