结论有条件:只有当站内链接、站点地图和服务器返回三者对同一资源的路径大小写不一致时,才需要建立统一映射;如果只是某一处链接写错而其他入口都指向同一路径,优先改链接,不必上映射规则。判断依据不是“有没有出现大写”,而是同一条URL在百度抓取日志、服务器访问日志和页面源码中是否被当成两个资源。
Linux服务器上 /News/2024.html 和 /news/2024.html 默认是两个不同文件,返回状态可能一个是200,另一个是404。Windows服务器或部分CDN配置则不区分大小写,两者都能返回200。反直觉的结果常出现在这里:你在浏览器里打开大写路径能看到页面,于是以为没问题,但百度抓到的可能是小写路径,而小写路径在源站返回404。
可核对的证据有三类:
如果三者一致,只是用户偶尔手动输入大写,那不属于收录映射问题,改一个跳转即可。
假设你把所有大写路径301到小写路径,日志里抓取量却下降了。这不能直接证明映射做错了,还有至少三种合理解释:站点地图仍写着大写、canonical指向大写、或者服务器在301之后又经过一层CDN改写回大写。此时抓取量归零或下降只是现象,不是判断对错的依据。
另一个反例是:源站本身就有两个不同内容,比如 /Product/A 是正式页,/product/a 是旧版活动页。这种情况下不能简单统一映射,否则会把两个有独立价值的页面合并成一个。必须先确认它们是否返回相同正文、相同标题和相同canonical。
动作分三步,每一步的结果都会决定下一步:
假设一个站点的规范路径是小写,站点地图也写小写,但导航栏链接写成了大写。上线301后,导航栏点击会先命中大写再跳到小写。下一步不是继续加映射规则,而是直接改导航栏模板,减少一次跳转。这个动作的结果会体现在日志里:301数量下降,规范路径的直接200请求上升。
第一,robots.txt中如果屏蔽了某一种大小写路径,不等于该路径已被移除索引。抓取限制和索引移除是两件事,屏蔽后仍可能以其他方式出现在结果中。第二,站点地图提交不保证收录,它只帮助发现URL;路径统一之后,收录仍取决于页面本身是否可抓取、内容是否重复、以及百度是否选择保留该版本。
如果站点同时存在HTTP和HTTPS、带www和不带www的变体,大小写问题会和这些变体叠加。此时先固定一个协议和主机名,再处理路径大小写,否则301链会变长,判断日志时也分不清是哪一层造成的差异。
在服务器日志中筛选同一路径的两种大小写写法,比较它们的状态码和请求来源。如果只有站内链接产生大写请求,改模板即可;如果百度抓取也产生大写请求,并且返回200或404与规范路径不同,才需要保留301映射。做完这一步再决定是否继续加规则,而不是先假设所有大小写差异都必须统一处理。