先给结论:路径大小写差异通常不会在抓取阶段暴露,而是等到规范化、去重或索引入库时才出现,表现为同一内容被拆成多个候选 URL,或者其中一个版本长期不被选中。统一映射的关键不是“把所有路径改成小写”,而是先确定哪一条路径是规范事实源,再让其余写法通过重定向或链接改写指向它,并且让服务器、站点地图和站内链接三处对同一条路径的写法保持一致。
下面按两种前提展开:服务器文件系统区分大小写,和不区分大小写。两种情况下动作不同,选错方向会让问题从“重复”变成“404”。
在区分大小写的环境里,/Docs/Index.html 和 /docs/index.html 是两个真实存在的文件,都能返回 200。这时大小写差异是内容层面的重复,必须人为指定唯一规范路径。在不区分大小写的环境里,两者指向同一个文件,服务器通常都返回 200,看起来“没问题”,但链接、站点地图和重定向里混用两种写法,仍会让抓取工具把它们当成两个候选地址。
判断依据可以核对这几点:
这三种结果指向不同动作,不能只凭“看起来一样”就统一改小写。
如果确认文件系统区分大小写,优先保留已经产生外链、已经进入站点地图的那条路径作为规范路径。假设规范路径是大写开头的 /Docs/Index.html,那么对 /docs/index.html 这类写法应返回 301 指向规范路径,而不是直接删除文件或改名。
具体动作与结果:
例外情况:如果非规范写法从未被任何链接引用、也没有外部来源,可以直接让它返回 404,不必专门做 301。判断标准是它是否曾作为可访问地址对外出现过。
在不区分大小写的环境里,服务器对两种写法都返回 200,这时不能靠 301 来统一,因为两条路径本身就是同一个资源。要做的是在输出层统一写法:模板、CMS 字段、站点地图生成逻辑、内链组件都使用同一个规范字符串。
可以按这个顺序核对:
这里的取舍是:如果站点规模小、链接来源可控,优先改链接;如果外部来源多、改不动,才依赖规范标签和重定向。规范标签是提示,不是强制指令,不能保证一定被采纳,所以能改链接时应先改链接。
多个角色对“哪个路径才对”有不同理解时,争论通常停留在口头。更有效的做法是产出一份路径映射清单,让每个人核对同一组事实。清单至少包含四列:实际请求的路径、返回状态码、规范路径、处理动作。
假设的例子:某页面同时存在 /Docs/Index.html 与 /docs/index.html。清单里记录前者返回 200、后者返回 301 指向前者,规范路径为前者,处理动作为“保留 301,链接统一为规范写法”。任何人再提出异议时,核对的是同一张表,而不是各自的印象。
这份清单还能暴露一个常见误判:把“某个写法请求量归零”当成问题已解决。请求量归零也可能是因为抓取预算转移、日志采集范围变化,或该路径本来就没有被链接引用。要确认映射是否真正统一,应同时看状态码、站点地图写法和站内链接写法三处是否一致,而不是只看一个指标。
路径统一只解决“同一内容对应多个候选地址”这一类问题,它不解决抓取限制和索引移除。robots.txt 的抓取限制不等于可靠的索引移除,被限制抓取的 URL 仍可能以其他方式出现在索引结果中。站点地图写明规范路径也不保证收录,它只是提供候选。不同搜索引擎对规范标签和重定向的处理存在差异,需要分别核查,不能用一个引擎的表现推断另一个。
因此,完成路径映射后,下一步是分别核对各搜索引擎对规范路径的实际选择结果,而不是假设统一写法就自动带来一致结果。这一步的核对对象是状态码、规范标签指向和实际被选中的地址,三者一致才算映射闭环。