301跳转设置出现异常时,确定影响范围的核心方法是:先确认异常是“单条规则失效”还是“整站跳转链路中断”,再用抓取工具和日志分别验证旧URL、目标URL和中间跳转节点。不要只看浏览器地址栏是否变化,因为浏览器缓存、CDN缓存和搜索引擎缓存可能给出不同结果。下面是一份可执行清单,每项都说明查什么、怎么查、结果说明什么。
先区分三种常见异常:旧URL返回404或200而不是301;旧URL跳到错误目标;跳转链过长或形成循环。查法是用curl -I分别请求旧URL和目标URL,观察状态码和Location头。如果旧URL返回200,说明301规则没有生效或被其他规则覆盖;如果返回404,说明旧URL已不存在且没有配置跳转;如果返回301但Location指向无关页面,说明目标地址写错。结果说明影响范围至少覆盖该条规则涉及的所有旧URL。
不要只测一个URL。从旧URL列表中抽取三类样本:首页、栏目页、内容页各若干条。对每条执行curl -I,记录状态码和最终目标。如果只有个别URL异常,影响范围是单条规则或单条URL;如果同一目录下大量URL异常,影响范围是该目录对应的规则组;如果全站旧URL都异常,影响范围是整站跳转配置或服务器层规则。适用条件是你能拿到旧URL清单;拿不到时,用站点地图或历史日志抽样,但站点地图不保证收录,只能作为参考样本。
301跳转设置可能经过多个节点:服务器配置、CDN、反向代理、应用层。查法是用curl -IL跟踪完整跳转链,看每一跳的状态码和Location。如果第一跳是301,第二跳变成302或200,说明中间节点改写了规则;如果出现301指向自身,说明循环跳转,影响范围会波及所有经过该节点的URL。结果说明异常可能不在你最初修改的那条规则上,而在上游节点。判断依据是:链路中任何一跳不符合预期,该跳之后的所有URL都受影响。
服务器访问日志能反映真实抓取和用户请求。查法是筛选旧URL的请求记录,统计返回301、302、404、200的比例。如果日志中大量旧URL返回404,而你的规则测试显示301,说明规则可能只对新请求生效,或日志来自规则生效前的时间段。如果日志中301比例高但目标URL返回404,说明跳转目标本身不可用,影响范围是“跳转成功但落地失败”的那部分URL。适用条件是日志保留完整;日志缺失时,只能以抓取样本和搜索工具中的收录状态作为近似判断。
301跳转设置异常对用户和搜索引擎的影响范围不同。用户侧看浏览器是否到达正确页面;搜索引擎侧看旧URL是否仍被索引、新URL是否被收录。查法是在不同搜索引擎中分别搜索旧URL的特征串,观察返回的是旧URL还是新URL。注意robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。如果旧URL仍被索引,但用户访问正常,说明索引更新滞后,影响范围主要在搜索展现;如果用户访问也异常,影响范围同时覆盖用户体验和抓取。不同搜索引擎支持情况须分别核查,不能用一个引擎的结果推断另一个。
curl -I 旧URL。结果说明:非301即异常,影响该URL。Location头。结果说明:目标错误则影响所有指向该目标的URL。curl -IL。结果说明:超过两跳或循环则影响链路中所有URL。下一步:根据清单结果,把异常URL按“单条、目录、全站”三类归入不同处理队列,先修复影响面最大的一类,再逐条验证状态码和最终落地页。