当服务器返回 404 not found,而文件在磁盘上确实存在,路径大小写不一致是最容易被忽略的原因之一。结论是:只有在源站文件系统区分大小写、且 URL 生成端与请求端对大小写的处理不一致时,才需要建立统一映射;如果源站运行在不区分大小写的文件系统上,同一路径的大小写变体通常都能命中,这类 404 往往另有原因。统一映射的目标不是把所有大小写变体都保留,而是让每个仍然有价值的内容只有一个规范地址,其余变体稳定地指向它。
路径大小写问题可能出现在三个位置:内容里写死的链接、URL 生成逻辑输出的地址、以及服务器或 CDN 对请求路径的处理方式。三者中任何一处与其他两处不一致,都可能出现“文件在、页面却 404”。
一个可区分的证据是日志中的请求路径形态:若 404 请求集中在少数几种大小写写法上,而规范写法从未出现 404,映射就能对症;若 404 请求路径本身杂乱无规律,映射只会掩盖更上游的生成问题。
第一种条件:旧地址仍有外部引用或用户记忆价值。此时把大小写变体通过 301 永久重定向到规范地址,既保留价值,又让规范地址承担后续维护。
第二种条件:旧地址已无引用价值,只是内部系统残留。此时更合适的是让变体直接返回 404 或 410,而不是为它们维护映射表;映射表越长,后续改动时越容易漏改。
两种选择的分界不是“能不能访问”,而是“这个地址还会不会被外部使用”。假设一个旧专题页只在内部工单里出现过,且从未对外发布,那么为它的大小写变体建重定向,收益接近于零,反而增加规则冲突的风险。
如果源站部署在不区分大小写的文件系统上,那么“大小写变体都返回 200”本身就是正常现象,此时你看到的 404 与大小写无关。常见解释包括:请求路径多了或少了斜杠、URL 编码后的字符被二次解码、反向代理把路径改写过、或者请求打到了尚未同步新版本文件的节点。
在这种环境下强行加一套大小写映射,可能把本来能正常访问的变体重定向到规范地址,短期内看似统一,实际上掩盖了真正导致 404 的那一层。判断方法是:先在不改任何规则的前提下,用规范大小写和几种变体分别请求,记录各自状态码;如果变体本来就是 200,就不要把大小写列为嫌疑对象。
确认需要映射后,按以下顺序处理,可以避免规则互相覆盖:
完成抽样后,如果发现某些变体仍返回 404,先检查它们是否被更靠前的规则拦截,而不是继续追加新规则。规则叠加越多,后续排查成本越高。
如果这次处理的背景是旧内容退出,需要区分“保留并统一”与“彻底移除”两种意图。重定向表达的是保留价值;对于确定不再提供的内容,返回 404 或 410 更符合意图。需要注意的是,robots.txt 中的抓取限制并不等于可靠的索引移除,站点地图也不保证收录,这些手段都不能替代对路径本身的处理。若同时涉及多个渠道,搜索引擎、平台推荐和广告对旧地址的处理方式需要分别核查,不能假设一处处理完就全部生效。
下一步动作很明确:先在不改规则的情况下记录各大小写变体的真实状态码,再据此决定是建映射还是继续往上游排查,避免在错误的层反复调整。