curl -sI https://example.com/old | head -5
# 临时改 302 验证目标
return 302 https://example.com/new;

把一条 301 的目标从旧栏目改成新文章,服务器上 curl 已经返回新地址,自己的 Chrome 打开还是往旧栏目跳,换台电脑就正常。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,301 属于永久重定向,浏览器会把它写进本地缓存,默认没有过期时间,规则改了也不会重新请求。Chrome 里这块记录不跟随普通清缓存,要单独清掉才会失效。

「301 缓存」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:先确认服务端返回的是 301 还是 302,用 curl -I 看状态码;临时把规则改成 302 验证目标是否正确,确认后再换回 301;在 chrome://net-internals/#sockets 里清掉 socket 池,或直接用无痕窗口复测;确实要长期可改的跳转先上 302,观察一周再定 301。

改完只确认一件事:无痕窗口和另一台设备都跳到新地址,服务器日志里旧地址的请求数归零。

作者 9823189