结论先说:在高端域名注册场景里,若同一批站点文件在本地、构建产物和服务器上出现大小写不一致,不要靠“哪边看起来对”来定,而要先确定一个规范形式,再让所有环节都映射到它。只有当服务器文件系统、URL 规则和发布流程都能接受同一套映射时,路径统一才成立;如果服务器本身对大小写不敏感,而构建工具或 CDN 缓存按大小写敏感处理,单靠改一处文件名会留下新的分歧。
路径大小写问题通常不是单一故障,而是两类事实被混在一起:一类是磁盘上真实存在的文件名,另一类是请求进入服务器后如何匹配到文件。Linux 服务器通常区分大小写,Windows 或部分挂载环境可能不区分;但即使服务器不区分,站点地图、内链、重定向规则和缓存键仍可能按原样记录大小写。
判断时先做一件事:从构建产物目录里取出实际文件名,与线上访问日志中的请求路径逐项对照。若同一页面在日志里同时出现 /Product/A.html 和 /product/a.html,说明请求侧没有统一;若日志只有一种,但构建目录里是另一种,说明发布或映射环节发生了替换。这个动作的结果会直接决定下一步:请求侧不统一,先改链接和重定向;构建侧不统一,先改生成规则和发布脚本。
可核对的统一映射至少要覆盖三层:源文件命名、URL 生成、服务器匹配。源文件命名决定仓库里的事实;URL 生成决定页面输出给爬虫和用户的路径;服务器匹配决定请求最终落到哪个文件。三层里任何一层保留旧形式,都会让其他角色看到不同版本。
假设一个短例子:仓库里存在 /Assets/Logo.svg,模板却输出 /assets/logo.svg。在区分大小写的服务器上,图片会 404;在不区分大小写的服务器上可能正常显示,但构建日志和缓存键仍记录两种路径。此时只把模板改成大写,可能让本地正常、线上异常;正确做法是先定规范形式,再同时改模板和重命名文件,最后用访问日志核对是否只剩一种请求形式。
反例是:站点已经存在大量外部链接、历史站点地图或第三方系统,它们固定引用大写路径,而服务器又不区分大小写。此时强行把规范形式改成小写,并让大写路径全部 301,短期可能把本可正常访问的请求推入重定向链;如果重定向配置不完整,还会让部分请求落到 404。更稳妥的做法是先保留大写路径可访问,再把小写形式作为新规范,逐步替换内部链接和站点地图,同时观察日志中两种形式的比例变化。
还要注意,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。路径统一后,若旧路径仍被外部引用,搜索引擎可能继续发现旧形式;这不是靠一次重命名就能消失的。应分别核查不同搜索引擎对大小写路径和重定向的处理,不要假设所有引擎行为一致。
下一步不是继续争论“应该大写还是小写”,而是产出一份路径映射表,并让每个角色都能核对。映射表至少包含:旧路径、新路径、当前返回状态、负责修改的环节、验证方式。然后按这个顺序执行:
如果验证后日志里旧形式请求量下降,但构建产物里仍存在旧文件名,说明发布流程没有完全覆盖;如果构建产物已统一而日志仍有旧形式,说明外部引用或缓存仍在起作用。两种结果指向不同动作,不能只用“请求量归零”判断处理正确,因为归零也可能来自抓取减少、日志采样变化或访问被阻断。把映射表、日志和构建产物放在一起核对,才能让多个角色对同一事实形成一致理解,并决定下一步是改重定向、改模板还是改发布脚本。