结论先行:只有当同一份内容在服务器上确实同时存在多种大小写路径、且旧链接仍持续产生有效访问时,才值得做统一映射;如果只是个别死链,直接改链或补一条重定向更省事。统一映射的正确做法是先把所有请求路径归一化成小写再比对,而不是给每种大小写组合各写一条规则。下面按可判断、可执行、可验证的顺序说明。
路径大小写问题通常来自两类原因,判断错了会做无用功。
/Images/Banner.jpg 与 /images/banner.jpg 是两个不同文件。旧链接写错大小写就会 404。第一种情况需要改文件或加映射层,第二种情况只需要在入口处统一归一化。可以先取一批 404 日志中的 URL,用 curl -I 分别请求原始大小写和全小写版本,看返回码是否不同。如果两者返回码一致,说明是书写不一致;如果只有一个返回 200,说明文件系统在区分大小写。
对绝大多数站点,推荐把请求路径统一转成小写,再与一份小写化的映射表比对。这样无论访客用哪种大小写,都能落到同一目标。
假设旧路径是 /Products/Blue-Widget,服务器上文件是 /products/blue-widget。可以按以下顺序处理:
关键取舍在这里:把所有大小写变体都兜底到首页,短期看 404 数量下降,但会让搜索引擎和用户都拿不到对应内容,属于掩盖问题。保留 404 反而能暴露尚未覆盖的路径。
反例:如果站点同时存在两个仅大小写不同、但内容不同的页面,例如 /Docs/API 是公开文档,/docs/api 是内部说明,那么归一化会把两者合并,导致其中一个无法访问。此时不能统一映射,而应保留区分,只对确认无价值的旧路径单独做 301。
另一个失效条件是路径中含大小写敏感的参数或签名,例如某些带校验值的下载链接。归一化会破坏校验,这类请求应排除在映射规则之外。判断依据是:转小写后目标是否仍返回正确内容,而不是只看状态码是否变成 200。
先只对一组路径启用归一化,例如只处理 /Images/ 前缀。启用后观察两点:该前缀下 404 是否减少,以及原本正常的链接是否仍返回 200。如果正常链接开始出现异常,说明规则范围过大,应缩小到具体目录。
需要提醒的是,404 数量下降本身不能证明映射正确。抓取量或请求量归零也可能来自日志采集中断、爬虫临时降频或规则把请求转成了其他状态码,这些都需要单独排查。验证应以“同一内容在大小写两种写法下都能取到”为准,而不是以 404 计数为准。
站点地图和 robots.txt 在这里帮不上忙:站点地图不保证收录,robots.txt 的抓取限制也不等于可靠的索引移除。映射规则生效后,下一步是检查站内链接和旧合作方链接是否仍指向错误大小写,从源头减少新产生的变体,否则映射表会持续膨胀。