判断永久重定向是否正常,不能只看浏览器地址栏有没有跳转,而要看三件事:原始网址返回的状态码是否为 301 或 308、跳转终点是否与预期一致、跳转链路是否只有一跳。只看页面能打开就认为成功,是常见误判;页面能打开可能来自 302 临时跳转、JavaScript 跳转、页面内 meta 跳转,甚至服务器返回 200 后由前端改写地址,这些都不等于永久重定向已经正确生效。
浏览器对用户很宽容。无论服务器返回 301、302、307、308,还是返回一个带脚本的 200 页面,用户看到的最终结果都可能是新地址。但从爬虫和搜索引擎的角度,这些响应的含义完全不同:301 和 308 表示资源已永久迁移,302 和 307 表示临时迁移,200 加脚本则意味着原网址本身仍然有效。若把临时跳转或前端跳转当成永久重定向,原网址可能继续被当作有效地址处理,权重和流量信号也不一定按预期转移。
另一个误解是“跳转越多越保险”。实际上多跳会拉长请求链路,每一跳都可能引入超时、参数丢失或跳转环。正常做法是让旧地址直接指向最终地址,而不是先跳中间页再跳终点。
可以用命令行工具逐项核对,下面以 curl 为例,假设旧地址是 http://example.com/old,预期终点是 https://example.com/new。这只是示例,实际替换成自己的网址。
curl -I http://example.com/old
301 Moved Permanently 或 308 Permanent Redirect,属于永久重定向的正常信号。-L 跟踪时,理想情况只有一次跳转;出现两次以上要检查是否有多余中间规则。200,而不是 404、410 或另一个 301。如果旧地址是 HTTP,还要确认跳转后落在 HTTPS,并且证书对目标域名有效。证书错误会让部分客户端中断请求,这不属于重定向逻辑本身的问题,但会表现为“跳转失败”。
异常不一定只有一个原因,下面按现象列出可能解释,需要结合服务器配置和请求日志定位,不能凭单一现象下结论。
优先顺序可以按“影响面 × 修复成本”排:先修返回 200 却已换内容的旧地址,因为它们既没有迁移信号,又可能被继续当作有效页面;再修 302、307 这类临时跳转,改成 301 或 308;最后处理多跳和跳转环。跳转环通常影响最严重,但往往集中在少数规则上,定位后修复很快。
执行时先抽样:从旧地址列表里挑首页、栏目页、带参数页各若干条,逐条记录状态码、Location 和终点状态。抽样正常后再批量验证。若站点使用 robots.txt 限制抓取,要注意抓取限制不等于索引移除,旧网址仍可能以其他方式出现;站点地图也不保证收录,不能代替重定向检查。
把旧地址、预期终点、实际状态码、跳转次数、终点状态码五列记在同一张表里,每次改完规则后重跑抽样。判断标准很简单:永久重定向正常,就是 301 或 308、一跳到位、终点 200 且与预期一致;只要有一项不符,就先按异常处理,再决定是否扩大修复范围。