先给结论:路径大小写差异不能靠“让服务器忽略大小写”一劳永逸,也不能靠反复提交来覆盖。正确做法是选定一个规范形式,把其他大小写变体通过服务器层映射到规范形式,并让站点地图、内链和统计口径都只出现规范形式。这样搜索引擎收录统计里同一内容才会归并到一个URL,而不是分裂成多个条目。
当收录统计显示同一页面出现多个URL,第一步不是改代码,而是把分歧拆成三层:服务器是否把不同大小写视为不同资源;页面里的链接和站点地图写的是哪种形式;统计工具统计的是请求URL还是规范化后的URL。三层里任何一层不一致,都会让收录数量看起来异常。
一个可核对的证据是直接请求。假设规范形式是 /Docs/Guide.html,分别请求 /docs/guide.html 和 /Docs/Guide.html,观察返回状态和最终地址。如果两者都返回200且内容相同,说明服务器把它们当成两个资源,问题出在服务器层;如果小写形式返回301并跳到规范形式,说明映射已经存在,问题更可能出在链接或统计口径。
统一映射的前提是先定一个规范形式。常见选择是全部小写,因为小写在多数文件系统和URL书写习惯里更少歧义。但这不是硬性规则,关键是全站只保留一种。选定的依据应当是现有链接和站点地图中占多数的形式,避免为了统一而制造大量改动。
如果站点已经在统计里积累了大量小写URL的收录记录,把规范形式定为小写,改动面更小;如果历史链接和外部引用以大驼峰为主,强行改成小写会让已有映射失效。此时应保留大驼峰为规范形式,把其他变体映射过去。两种选择都成立,区别在于哪一种能减少需要修改的链接数量。
映射要落在服务器或反向代理层,而不是靠页面里的链接自觉。以常见配置为例,可以在服务器规则里把已知的大小写变体301重定向到规范形式。动作要具体:列出所有实际出现过的大小写组合,而不是只处理全大写和全小写两种。
完成配置后,对每个变体逐一请求,核对三件事:返回状态是否为301、跳转目标是否为规范形式、跳转是否只发生一次。如果出现跳转链,比如小写跳大写再跳另一个地址,搜索引擎可能把中间地址也计入统计,归并效果会打折。验证通过后,下一步才是更新站点地图和内链,否则搜索引擎仍会从旧链接发现变体。
服务器映射只解决请求层面。如果站点地图里同时存在大小写两种形式,或者页面导航里混用,搜索引擎仍会持续发现变体。需要检查的来源包括:站点地图中的URL、页面内链、分页链接、以及任何自动生成的列表页。
注意,站点地图不保证收录,它只是告知候选地址;robots.txt的抓取限制也不等于可靠的索引移除。把变体从站点地图删掉,并不自动让已收录的变体消失,只是减少新发现。真正让统计归并的,是服务器映射加上规范形式的一致性。
假设一个团队发现收录统计里同一文档出现三种写法:全小写、首字母大写、全大写。开发认为服务器不区分大小写,运营认为统计工具出错。把分歧转成可核对项目的做法是:先请求三种写法,记录状态码和最终地址;再检查站点地图和导航中实际出现的写法;最后确定规范形式并配置映射。
如果请求结果显示三种写法都返回200,那么先修服务器映射;如果只有一种返回200、其余301,那么先修站点地图和内链。这个顺序决定了下一步动作:前者需要开发改配置,后者只需要编辑改链接。把这三步结果写进同一份核对记录,团队对“问题在哪一层”的理解就会一致,后续统计变化也能对应到具体动作,而不是归因于算法波动。