路径大小写差异导致的死链接,不能靠逐条补 301 解决,而要先把 URL 到文件的映射规则统一到一种大小写上,再决定是改文件、改链接还是加规则。核心判断依据是:服务器文件系统是否区分大小写,以及站内链接、站点地图、外链里的大小写写法是否一致。两者只要有一处不一致,就会出现“本地正常、线上 404”的矛盾现象。下面按这个矛盾展开。
典型表现是:/Images/Banner.jpg 能访问,/images/banner.jpg 返回 404,而链接在页面源码里两种写法都出现过。这不是随机故障,而是映射规则在某一层被严格执行了。
常见有两种解释:
images/ 和 Images/ 是两个不同目录,文件实际只存在于其中一个,另一种写法自然找不到。两种解释的修复方向完全不同:前者要统一磁盘与链接的写法,后者要先确认是哪一层在改写路径。
不要凭感觉判断,用下面几个动作获取可区分证据。
ls -la 查看目录和文件的真实名称,记录大小写。这是磁盘事实。curl -I 分别请求两种写法,对比返回的状态码和 Location 头。如果一种 200、一种 404,说明路径没有被无条件归一化。如果磁盘上只有 Images/,而请求 images/ 返回 404,那基本可判定为解释一。如果两种写法都返回 200 但指向不同内容,或返回 301 跳到同一个小写路径,则是解释二或应用层归一化在起作用。
确认原因后,映射统一有三条路,选择取决于改动成本和资源规模。
一个关键取舍是:重写规则只是兜底,不能替代统一写法。如果站内链接继续混用大小写,规则会越加越多,后续排查难度上升。
假设某站点磁盘上是 /Images/,但历史外链大量写成 /images/。先加一条把 /images/ 重写到 /Images/ 的规则,观察一段时间。
结果会影响下一步决策:如果重写后 404 明显减少,且日志中两种写法的请求都稳定命中,就可以保留规则并逐步把站内链接改为真实写法;如果重写后仍有 404,说明还有第三种写法或另有路径层级问题,需要回到映射清单重新比对,而不是继续叠加规则。这个例子中的数字只用于说明比较方法,不代表真实站点数据。
统一映射后,抓取量或请求量归零不能单独证明修复正确,因为缓存、抓取频率调整、临时屏蔽都可能造成同样现象。更可靠的验证是:
如果站点地图仍保留旧写法,收录表现不会立即反映修复效果,因为站点地图不保证收录,且不同搜索引擎对路径大小写的处理需要分别核查。把映射统一、链接统一、规则兜底三件事分开验证,才能判断死链接修复是否真正生效。