先给结论:如果服务器或框架对路径大小写敏感,而站内链接、站点地图或历史外链混用了大小写,蜘蛛抓取频率往往不会平稳下降,而是表现为同一批内容被反复请求、部分 URL 长期停在待抓取状态。统一映射的目标不是让所有大小写变体都返回 200,而是选出一个规范形式,让其余变体以可预期的方式收敛到它。常见取舍是“全部 301 到规范路径”与“全部 200 直接可访问”之间,前者适合已存在大小写混用且外链不可控的站点,后者只适合路径规范严格、能保证不再产生新变体的站点。
日志里同一篇内容可能出现三种请求:/Guide/SEO、/guide/seo、/guide/SEO。如果服务器把它们当成三个独立资源,每种都返回 200,蜘蛛会分别排队抓取,抓取频率看起来正常甚至偏高,但真正被索引的仍是其中一两个,其余变体占用抓取预算。反过来,如果服务器对大小写敏感,只有一种能返回 200,其余返回 404,蜘蛛会反复重试或降低对整组路径的信任,抓取频率在日志里表现为某些变体持续出现、某些变体突然消失。
第一种解释是服务器或应用层对路径的处理不一致。例如 Nginx 默认区分大小写,而某些框架路由会先规范化再匹配;静态文件系统在 Linux 上区分大小写,在部分容器或对象存储配置下可能不区分。这种不一致会让同一 URL 在不同环节得到不同状态码,蜘蛛收到矛盾信号。
第二种解释是发现入口不统一。站内链接、站点地图、历史外链、RSS 或接口返回的路径大小写各自为政,蜘蛛从不同入口发现同一内容的不同变体,于是分别抓取。此时服务器行为可能完全一致,问题出在“谁告诉蜘蛛该抓哪个”。
能区分这两种解释的证据有三类。第一,按路径变体分组统计状态码:如果同一逻辑页面的大写变体返回 200、小写变体返回 404,且两者都来自站内链接,偏向服务器行为不一致;如果所有变体都返回 200,偏向发现入口不统一。第二,检查站点地图和主要导航中出现的路径形式,若它们本身混用大小写,入口问题更明显。第三,观察蜘蛛对 301 与 404 的后续行为:对明确 301 到规范路径的变体,后续请求通常逐步减少;对返回 404 的变体,蜘蛛可能继续尝试,也可能停止,这取决于该变体是否仍被其他页面引用。抓取量归零或某项统计下降,不能单独证明映射已经正确,因为抓取预算调整、站点整体改版或 robots.txt 变更都会产生类似现象。
选择 301 收敛的条件是:已经存在不可控的大小写混用外链,或站内历史内容无法一次性改完。代价是每个变体都要经过一次跳转,蜘蛛需要额外抓取跳转链,短期抓取频率可能上升,且跳转链过长会削弱信号。动作上,先确定一个规范形式,通常选小写,然后在服务器或应用层把其他大小写变体 301 到规范路径。执行后观察日志中变体请求是否从 200 转为 301,以及规范路径的抓取是否逐步集中。如果变体仍被大量请求且状态码不变,说明映射没有生效或存在缓存层。
选择 200 并存的条件是:路径规范已经严格,站点地图、站内链接和接口都只输出一种形式,且能保证不再产生新变体。代价是一旦出现新变体,它会立即成为可访问的重复内容,没有跳转层兜底。动作上,建立发布前的路径检查,把大小写规范写进模板和接口约定。执行后如果日志中仍出现新变体,说明检查没有覆盖某个入口,需要回到入口来源继续排查。
假设一个站点有 500 个页面,其中约 80 个存在大小写混用外链。若全部 301 到小写规范路径,短期内日志中会出现约 80 组跳转请求;若全部保持 200,则这 80 组会各自占用抓取队列。两种做法的代价不同,选择取决于外链是否可修改、服务器是否容易统一处理,以及是否愿意承担跳转链的抓取开销。
映射统一后,下一步不是立刻要求收录或排名变化,而是确认日志中变体请求是否收敛到规范路径、站点地图是否只包含规范形式,以及新发布内容是否不再产生新的大小写变体。只有这些前置条件稳定,抓取频率的变化才具备可解释性。