要取得301转向可复查的状态证据,核心是保存“请求—响应—落点”三段的原始记录:用命令行工具抓取响应头,确认状态码为301且Location指向预期目标;再连续请求目标URL,确认最终返回200;最后把命令、时间、完整输出和操作人一起归档。只截图浏览器地址栏变化不算证据,因为缓存、前端跳转和软404都可能造成误判。
从验收角度倒推,任何一条301转向的复查材料都应包含:
Location、Cache-Control等字段。Location目标再发一次请求,记录其状态码与最终URL,确认没有二次跳转链或跳回原地址。这三类证据缺一不可。只有响应头没有落点验证,无法判断目标页是否可用;只有浏览器截图没有原始响应,无法排除客户端脚本跳转的干扰。
优先使用curl的-I或-i参数,把输出重定向到文本文件,而不是只留在终端里。示例命令如下:
curl -sS -D - -o /dev/null -H "User-Agent: Mozilla/5.0" https://example.com/old-page > redirect-check.txt
执行后检查文本中是否出现HTTP/1.1 301或HTTP/2 301,以及Location:指向的地址。判断标准是:状态码必须是301,不能是302、307或<meta>刷新;Location必须是绝对URL或可解析的相对路径,且指向与旧页面主题一致的页面。
适用条件是服务器直接返回跳转。如果输出里出现200但页面内含跳转脚本,说明这不是301,需要回到服务端配置层排查。注意:命令行结果也会受CDN或反向代理缓存影响,必要时加-H "Cache-Control: no-cache"再抓一次,两次结果不一致时以源站直连结果为准。
可复查的证据要能回答“跳了几次、最后落在哪”。使用带跟随跳转并输出每一跳的命令:
curl -sS -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://example.com/old-page
如果只输出一行且状态码为200,说明链路较短;如果输出多行中间状态,说明存在多级跳转。多级跳转本身不一定错误,但每一跳都应有明确理由,且最终落点必须返回200。若最终状态码是404或5xx,这条301应视为未完成,不能进入验收。
对于批量URL,可以写一个简单的循环,把每个URL的响应头和落点分别写入独立文件,文件名用URL的哈希或序号,避免覆盖。这样复查时可以按文件逐条核对,而不必重新请求线上环境。
时间和人手有限时,不要追求复杂系统,先固定一个最小归档结构:
Location值。责任上,配置修改与证据抓取最好由不同人完成,或至少由第二人复核总表与原始文件是否一致。验收人只需检查三件事:状态码是否为301、Location是否与总表一致、落点是否返回200。三项都通过即可签字,不必逐条阅读全部响应头。
以下现象容易让301证据失真,需要单独排查:
如果旧URL已被搜索引擎收录,301生效后仍需等待其重新抓取和处理。这段时间内,归档证据的作用是证明站点侧配置正确,而不是保证收录状态立即变化。
下一步:挑出当前流量最高或外链最多的十条旧URL,按上面的命令各抓一份响应与落点记录,填入总表,先完成这十条的复查闭环,再决定是否扩大范围。