要确定301转向异常的影响范围,先不要只看某一个报错页面,而应把“跳转是否发生、跳到哪、最终页是否可访问、哪些入口受影响”分开检查。常见误解是:只要目标页能打开,就说明301没有问题;实际上,301异常可能只影响部分旧网址、部分参数、部分搜索引擎或部分跳转链路,目标页正常并不代表整条跳转链正常。
301异常通常表现为几种不同情况:旧地址返回404或500、返回200而不是跳转、跳转到错误地址、跳转后出现循环、跳转链经过多个中间地址。它们的影响范围不同。判断时可以按下面顺序执行:
Location响应头。这里的关键判断是:异常发生在“规则匹配阶段”“服务器响应阶段”还是“目标页阶段”。规则匹配阶段的问题,往往只影响符合某类路径格式的地址;服务器响应阶段的问题,可能影响整组旧地址;目标页阶段的问题,则可能让所有跳转最终都落到错误页。
确定影响范围不能只靠一个样本。可以把旧地址按路径层级、是否有参数、是否来自站点地图、是否来自外部链接分组,每组抽几个检查。假设某项目把/old-a、/old-b、/old-c都301到新地址,结果只有/old-b异常,那么影响范围更可能是/old-b对应的规则或目标页,而不是整条301机制失效。
?id=、带跟踪参数、带大小写差异的地址分别检查。如果多个分组都异常,影响范围可能覆盖整批规则;如果只有一个分组异常,优先修该分组对应的条件,不必把所有旧地址一起改掉。
301转向的终点如果本身返回404、500或需要登录,用户看到的仍然是异常。此时问题不一定在301规则,而可能在目标页。检查项包括:目标页是否可公开访问、是否返回200、是否被robots.txt限制抓取、是否被noindex标记、是否依赖登录或地区限制。
另一个常见情况是跳转链过长。例如旧地址A跳到B,B又跳到C,C才是最终页。对用户来说可能仍能到达,但对抓取和权重传递而言,链路越长越容易出问题。判断方法是记录每一跳的状态码和地址,确认是否存在循环或多跳。若发现循环,影响范围通常包括所有进入该循环的旧地址;若只是多一跳,影响范围可能仅限于这一组规则。
需要区分“可能原因”和“已经定位的原因”。看到跳转异常,可能是规则写错、服务器配置未生效、缓存未更新、目标页故障,也可能是外部平台改写了地址。只有通过逐项检查,才能把可能原因缩小为已定位原因。
301异常对用户和对搜索引擎的影响范围不一定相同。用户访问异常,通常能通过浏览器立即发现;搜索引擎方面,则要分别核查不同搜索引擎的抓取和索引情况。robots.txt的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS也不保证安全无漏洞或排名。因此,不能因为某一个搜索引擎仍显示旧地址,就断定301完全失效,也不能因为用户能跳转,就断定索引已经正确更新。
可执行的核查方式是:对异常样本记录状态码、跳转目标、最终页状态、是否可被抓取,再与正常样本对比。若正常样本和异常样本只差一个路径条件,影响范围就基本锁定在该条件;若正常样本也出现异常,则要检查服务器配置、缓存和全站规则。
先列出异常样本、正常样本和它们之间的差异条件,再按差异条件修复规则或目标页。修复后重新检查同一批样本,确认状态码、跳转目标和最终页都符合预期,并观察原先异常的入口是否恢复。不要只改一个页面就宣布问题解决,范围判断应以样本对比结果为准。