先给有条件的结论:当站点在 Linux 服务器上运行,而站内链接、站点地图和提交记录里的路径大小写不一致时,把提交用的路径统一映射到服务器上真实存在的那个文件路径,通常能消除一批“提交成功但抓取失败”的样本。但这套做法只在“路径确实指向同一份内容、且服务器不做大小写兜底”的前提下成立;一旦服务器本身已经做了大小写不敏感映射,或者两个大小写不同的路径分别对应不同内容,统一映射就会制造新的错误。
在 Windows 或 macOS 默认文件系统上,/News/2024/Index.html 和 /news/2024/index.html 往往指向同一个文件,本地测试时链接怎么写都能打开。单个页面手工提交时,你很可能正好复制了浏览器地址栏里的形式,于是看不出问题。规模扩大后,链接由模板、CMS 字段、编辑手工输入、旧站迁移规则等多个来源拼接生成,大小写形式开始分叉,提交工具收到的路径与真实文件路径不再一一对应。
此时出现的现象通常是:提交接口返回已接收,但抓取日志里对应 URL 返回 404,或者抓到的是一份空的目录列表。注意,提交量或抓取量下降本身不能单独证明是大小写问题,它也可能是服务器临时故障、robots 规则变更、CDN 回源异常等原因,需要结合逐条 URL 的响应码来判断。
统一映射不是无条件正确的。动手之前,至少确认三件事:
Index.html 与 index.html 是两个文件;部分文件系统和容器层做了不区分大小写的配置,此时映射是多余的。/Product/A 与 /product/a 是两个独立页面,强行统一会让其中一个消失。只有“服务器区分大小写、两路径同内容、且没有可靠重定向”这三条同时成立,统一映射才是安全且有效的动作。
假设某站点在迁移时把旧栏目 /Docs/ 整体保留为大写,新栏目使用小写 /docs/,两者内容不同:前者是历史版本文档,后者是当前版本文档。如果运维只看到“大小写不一致”就批量把小写路径改写成大写,或反之,结果是当前文档的提交全部指向历史版本,历史版本的提交指向当前版本。抓取成功率可能不降反升,但索引里的内容已经错位。
这个反例说明:大小写差异只是症状,不是病因。判断依据应当是“该路径在服务器上解析到哪个真实文件”,而不是“哪种大小写更整齐”。当两个大小写形式各自对应真实且不同的资源时,正确做法是保留两条路径并分别提交,同时用规范标签或重定向明确哪一个是首选版本,而不是做统一映射。
确认适用条件成立后,可以按下面的顺序处理:
关键的验证动作是:改完之后重新抓取一批此前失败的 URL,看响应码是否从 404 变为 200,并抽查页面正文是否与预期一致。如果响应码变好但正文不对,说明映射方向选错了,应立即回退并转为逐条人工判断。这一步的结果直接决定下一步是扩大映射范围,还是缩小到只处理已确认同内容的路径。
站点地图列出的是你希望被处理的 URL,它不保证这些 URL 会被抓取或收录。提交工具的作用是告知,不是校验路径真实性的手段。因此不要用“提交后没报错”当作路径正确的证据,也不要用 robots.txt 的抓取限制来代替对错误路径的处理——限制抓取和从索引中移除是两件不同的事,前者不构成可靠的移除手段。
不同搜索引擎对路径大小写的处理和重定向跟随策略需要分别核查,不能因为在一个引擎里验证通过就推断其他引擎同样成立。把路径归一化放在生成环节、用真实文件清单做校验,是比事后逐条修补更稳的起点。