排查永久重定向时,日志里最该先核对的是状态码字段、请求URL与目标URL字段、来源IP与User-Agent字段、时间戳字段以及响应大小与Referer字段。其中状态码决定这次跳转是否真的按永久重定向处理,URL字段决定跳转链路是否成环或落错目标,其余字段用于判断是谁在访问、是否被缓存或是否被异常客户端反复触发。
日志中的状态码是判断永久重定向的第一依据。301表示资源永久迁移,308表示永久迁移且要求保持原请求方法。302和307是临时跳转,不应被当作永久重定向方法使用。如果日志里大量出现302,而代码或服务器配置本意是永久跳转,说明规则没有生效或被上层覆盖。
核对时不要只看一次请求。应筛选同一路径在多个时间段的记录,确认状态码是否稳定。若同一URL时而301、时而302,可能是不同服务器节点配置不一致,或缓存层返回了旧规则。
日志通常记录请求路径,但不一定直接记录响应头中的Location。如果日志格式支持自定义字段,应把Location加入输出;如果不支持,就需要结合服务器配置或抓包工具交叉核对。
判断要点:
例如,假设日志显示 /old-page 返回301,Location为 /new-page,但 /new-page 又返回301到 /old-page,这就是闭环,需要立即修正规则。该例子为假设,用于说明判断方法。
来源IP和User-Agent用于区分访问者类型。搜索引擎抓取、真实用户、监控探针和恶意爬虫的行为不同。如果某个User-Agent高频请求旧URL并持续收到301,可能说明旧链接仍被外部引用,或者站点地图、内链中仍保留旧地址。
Referer可以帮助判断流量从何处进入旧URL。若大量Referer来自站内其他页面,说明内链没有更新;若来自外部站点,则需要评估是否值得保留重定向,而不是直接删除规则。
这些字段只能提供线索,不能单独证明重定向是否正确。它们需要与状态码和Location一起看。
时间戳用于判断重定向是持续存在还是刚刚出现。若某条301规则在配置变更后突然大量出现,应回查变更记录。响应大小通常很小,因为重定向响应体一般不含完整页面内容;如果响应大小异常大,可能说明返回的不是纯重定向,而是错误页或缓存页。
请求方法也值得核对。301在部分客户端中可能把POST改为GET,308则明确要求保持原方法。如果旧地址接收表单提交,而日志显示POST请求被301处理后变成GET,可能导致参数丢失。此时应评估是否改用308,或直接让表单指向新地址。
适用条件:这套方法适合已经配置了永久重定向、但不确定是否生效或是否产生副作用的站点。判断结果时,以状态码和完整跳转链为准,不要仅凭单次浏览器访问就下结论。不同搜索引擎对重定向的处理节奏不同,日志核对只能确认服务器行为,不能保证收录或排名变化。
下一步:先导出最近七天状态码为301和308的日志,按请求URL聚合,找出跳转次数最多和跳转链最长的前十条记录,再逐条核对Location目标与最终页面。