先给结论:不要试图在查询端把大小写“猜”回来,而要在数据进入批量查询之前,把路径统一映射成一种规范形式。具体做法是选定一个基准(通常是小写),对站点地图、内链、日志和查询清单里的路径做同一套转换,并单独保留原始值用于回溯。这样批量查询比对的是同一把尺子,而不是让工具去兼容两套写法。下面以一个你手里的链接清单为对象,逐步转成可执行方案。
路径大小写差异引发批量查询结果混乱,通常有两种来源,需要先区分:
/Page/A,在站点地图里写成 /page/a,查询工具把它们当成两个条目,导致同一页面出现“已收录”和“未收录”两条记录。/Page/A 返回 200,/page/a 返回 404 或 301,此时差异是真实存在的,不是查询口径问题。区分方法:从清单里挑出成对的大小写变体,各取一条实际请求状态码。若两者状态码一致且内容相同,问题在映射层;若状态码不同,问题在抓取层,需要先修服务器或链接,再谈统一映射。
统一映射的核心是“一个基准 + 一条规则”,而不是每次查询临时判断。建议:
假设你有一份 500 条的链接清单,其中 37 条含大写字母。按上述规则生成规范列后,再去重,可能发现实际唯一路径只有 480 条——这个差值就是映射层造成的重复,而不是真的有 20 个页面消失。
统一映射不是写完规则就结束,要落到查询流程里:
这一步的实际影响是:如果跳过规范列直接查询,你得到的“未收录”数量会被大小写重复放大;去重后数量下降,下一步排查范围也随之缩小。数量变化本身不能证明处理正确,还要看抽样复核是否与之一致。
如果确认是抓取层问题,统一映射只能解决查询口径,不能解决页面本身的可访问性。此时有两种成立条件不同的选择:
两种选择不能混用:如果线上保留两种写法可访问,却只在查询端合并,那么查询结果会掩盖真实的重复内容风险;如果线上做了 301,却仍用旧的大小写清单查询,结果会持续偏高。
统一映射上线后,用一组已知条目做验证:从规范列里取 10 条,分别用规范写法和原始写法查询,比较返回结果是否指向同一页面。若一致,说明映射有效;若不一致,回到转换规则检查参数部分是否被误转小写。
同时保留回退路径:规范列是派生数据,原始列不动。一旦发现某条路径因大小写转换导致 404,可以立即用原始列重新查询,而不必重建整份清单。这样做的结果是,你能明确区分“映射造成的假差异”和“抓取造成的真差异”,下一步该修链接、修服务器还是只修查询脚本,就有了依据。