先给结论:如果服务器本身区分大小写,而站内链接、站点地图或日志里混用了大小写,正确做法通常是保留现有规范路径,把其他大小写变体通过服务器规则做301映射过去;只有在旧路径已无历史价值、且能确认无外链依赖时,才考虑直接改写并放弃旧变体。判断顺序不是看提交入口,而是先看服务器行为,再看提交数据里出现的变体。
大小写问题最容易误判。Linux环境下的文件系统通常区分大小写,/A/B.html与/a/b.html可能是两个不同资源;而在部分Windows或大小写不敏感的文件系统上,它们指向同一文件。这个差异会直接影响后续选择。
可以用一个最小验证动作:把同一路径的大小写变体分别请求一次,记录返回状态码和最终URL。如果两个变体都返回200且内容一致,说明当前映射可能已经生效但未统一;如果一个200、一个404,说明服务器区分大小写且缺少映射;如果两个都301到同一个地址,说明已有规则在起作用。这个结果决定下一步是补规则、改规则,还是清理提交数据。
还要区分现象来源:提交接口报错、抓取日志里出现404、还是站点地图里的URL与实际链接不一致。请求量或抓取量下降不能单独证明是大小写问题,也可能是抓取预算变化、服务器临时故障或规则误伤。只有结合状态码和最终URL,才能把原因收窄。
三种做法各有前提,不必强行同时采用。
如果无法确认外链情况,优先选保留并映射,因为它的可逆性更好;改写和退出一旦执行,回退成本更高。
第一,映射目标必须是规范路径本身,而不是另一个变体。假设规范路径是/Product/Detail.html,那么/product/detail.html和/PRODUCT/DETAIL.HTML都应指向它。如果规则写成把A变体指向B变体,就会形成链式跳转,增加抓取负担,也让后续判断最终URL变难。
第二,查询参数和尾部斜杠不要和大小写混在一起处理。例如/A/B.html?x=1与/a/b.html?x=1的映射,应先统一路径大小写,再决定参数是否保留。把两类规则混写,容易出现部分URL反复跳转。可以先用少量样本验证规则命中情况,再扩大到全量。
站点地图里只放规范路径,不要同时列出大小写变体。站点地图不保证收录,但它能减少提交数据里的歧义。若站点地图同时包含多个变体,后续统计会难以区分是映射生效还是重复提交造成的假象。
假设某站点有约200个页面,路径中同时存在/News/和/news/两种写法。先抽取一周日志,按大小写变体分别统计请求次数和返回状态码。
如果/News/返回200、/news/返回404,且404请求主要来自外部链接,那么保留并映射更合适:为/news/补301到/News/,再观察后续日志中404是否减少。如果404请求几乎为零,而内部链接已经全部使用/News/,那么可以直接改写并退出旧变体,把精力放在规范路径的提交上。
这个例子的数字仅用于说明比较方法,不代表任何真实站点。关键动作是先抽样、再看状态码、最后决定规则,而不是先改提交数据。
验证要落到具体请求上,而不是只看提交成功提示。可以按以下顺序检查:
如果第1步出现302或200,说明映射未按预期生效,应先修规则再做提交。如果第4步旧变体请求不降,可能是仍有外部引用或规则未覆盖,需要回到取舍阶段重新判断。完成这些验证后,再决定是否把该路径纳入常规提交范围。