先给结论:如果同一批页面在服务器上因大小写被当成不同文件,百度索引量往往会出现“已收录数量不少、但有效落地页变少或重复”的反常结果。统一映射的正确顺序是——先确认服务器与URL规范是否把大小写视为等价,再决定用301把错误大小写永久合并到唯一规范形式,还是用rel=canonical声明首选版本;两者不能同时指向不同目标,否则百度仍可能把两个路径当作独立页面处理。下面用一个假设情境把决策过程写清楚。
假设某站把栏目页放在 /Case/ 下,某次改版后内链和站点地图混用了 /case/ 与 /Case/。服务器同时返回200,两个路径都能打开,内容几乎相同。一个月后,百度索引量报告里该栏目“已收录”条目变多,但通过搜索进入的有效落地页没有同步增加,部分页面的快照标题也出现重复。此时不能直接判断“索引量虚高”,因为还有另外几种合理解释:
要区分这些解释,最直接的动作是取一份服务器访问日志,筛选该栏目路径,统计 /case/ 与 /Case/ 的请求量、返回状态码和响应体字节数。如果两者返回码都是200且字节数相同,说明服务器把它们当成了两份可访问资源;如果其中一个返回301或404,问题就落在跳转链而非内容重复上。这个动作的结果决定下一步:前者要合并URL,后者要修跳转目标。
大小写是否等价,取决于操作系统、Web服务器配置和框架路由,而不取决于内容是否相同。Linux文件系统区分大小写,Windows通常不区分;Nginx的location匹配默认区分大小写,除非显式使用不区分大小写的匹配;部分应用框架的路由规则也会把路径统一转成小写或保留原样。因此同一个站可能出现“目录区分、参数不区分”的混合状态。
可核对的证据包括:
Location响应头和最终URL;如果日志显示两种写法都被大量抓取且都返回200,说明百度把它们视为两个可抓取地址,此时“只改内链”不足以解决问题,必须做服务端层面的合并。
把大小写差异收敛到唯一规范形式,常见做法有三种,选择依据是“谁先被百度抓取”和“能否稳定返回跳转”。
三种做法不能混用成互相矛盾的目标。例如页面A用301指向小写,页面B的canonical却指向大写,百度会收到冲突信号,可能继续把两者当作独立页面。统一映射的核心是:全站只保留一个规范形式,所有其他写法都指向它。
服务端跳转只解决“百度再次抓取时怎么走”,不解决“百度已经抓过什么”。要让索引量逐步收敛,还需要让站内所有入口都输出同一种大小写:
一个可执行的检查动作:把站点地图里的URL全部提取出来,与服务器日志中实际被抓取的URL做对比,列出只出现在日志、不出现在站点地图里的路径。如果这些路径里大量是大小写变体,说明站内仍有入口在输出旧写法,应先修内链再观察抓取变化。
做完统一映射后,不要用单日索引量判断成败。更可靠的观察顺序是:
如果日志里错误变体请求下降但索引量条目暂时没变,这是正常的滞后,不能据此断定映射无效。如果错误变体请求没有下降,说明站内仍有链接在输出旧写法,或者301没有覆盖所有入口。如果两种写法的请求量都归零,也不能单独证明处理正确——可能是抓取预算转移、站点整体抓取减少或日志采样问题,需要结合其他栏目同期数据一起看。索引量是结果指标,不是验证映射是否生效的第一手证据;先看日志和状态码,再看索引条目,决策才不会反过来。