当同一份文件在服务器上以不同大小写形式存在,而站内链接、站点地图或旧系统引用混用了这些写法时,收录检查会看到部分URL正常、部分URL长期不出现。统一映射的核心不是把所有路径改成小写,而是先确定服务器是否区分大小写,再决定保留一个规范形式并用跳转或重写把其余形式收束过去。
Linux服务器上的文件系统通常区分大小写,/Guide/SEO.html和/guide/seo.html可以是两个不同文件,也可能只有一个真实存在。Windows服务器和部分容器环境默认不区分大小写,两种写法都能访问同一文件。这个差异决定了你面对的是“两个真实URL竞争”还是“一个URL的多种写法”。
判断方法很直接:在服务器上对同一路径分别用大写和小写请求一次,记录返回状态码和最终内容。如果两种写法都返回200且内容一致,说明服务器不区分大小写;如果一种返回200、另一种返回404,说明区分大小写,且只有一种写法真实存在。
选择依据可以归纳为:服务器区分大小写时,必须选定唯一规范路径并把其他写法永久跳转过去;服务器不区分大小写时,重点转向统一站内引用和站点地图写法,避免同一内容被多种URL形式引用。
旧系统或旧合作关系退出时,常见做法是直接删掉目录。但如果这些路径仍有外部链接或历史访问,直接删除会让收录检查出现大面积404。更稳妥的动作是先冻结:保留文件内容不变,只把非规范写法通过服务器重写规则映射到规范路径。
具体实施动作可以按这个顺序:
这个动作的结果会直接影响下一步:如果跳转后原写法仍返回200,说明重写规则没有生效或被其他规则覆盖,需要先排查规则顺序,而不是继续改站点地图。
并非所有大小写差异都指向同一份内容。假设旧系统里/API/和/api/分别对应文档页和接口说明页,它们就是两个不同页面。这种情况下不能做统一跳转,否则会把一个有效页面合并掉。
区分方法是对比两种写法的响应内容:如果正文、标题和主要结构一致,可以视为同一内容并做映射;如果内容明显不同,应保留两个路径,只在站内链接和站点地图中明确各自用途。这里的判断依据是内容本身,而不是路径拼写。
对于确认是同一内容的路径,映射动作要一次做完,不要分批次。分批映射会让收录检查在中间阶段看到同一内容既有301又有200,增加判断成本。
跳转规则生效后,收录检查的重点从“有没有收录”转向“规范URL是否稳定”。可以观察三类信号:原写法请求是否稳定返回301、规范URL是否持续返回200、站点地图中是否只保留规范写法。这些信号同时成立,才说明映射基本收束。
需要注意,robots.txt的抓取限制不等于可靠的索引移除。如果旧路径被robots.txt屏蔽,搜索引擎可能仍保留历史索引,此时应优先用301或410处理,而不是依赖robots.txt。同样,站点地图不保证收录,它只是声明规范URL的辅助手段,不能替代跳转规则。
如果映射上线一段时间后,原写法请求量下降但规范URL的抓取量没有同步上升,这不能单独证明映射正确。合理解释还包括:外部链接尚未更新、站点地图未重新提交、服务器日志采样不完整。此时应继续核对跳转链路和站内引用,而不是直接判定映射失败。
有三种情况需要单独处理。第一,路径大小写差异来自CDN或反向代理的缓存键,源站本身只有一种写法,此时应调整缓存配置而不是加跳转。第二,旧路径带有查询参数且参数决定内容,大小写只是参数值的一部分,统一路径映射无法覆盖。第三,合作方系统仍按旧写法生成链接,且短期内无法修改,此时可以保留旧写法返回200,但在页面中声明规范URL,并推动合作方更新链接。
这些例外的共同点是:问题不在路径本身,而在路径之外的系统或协议。先确认这一点,再决定是否继续做统一映射,可以避免把跳转规则加到不该加的地方。