这类问题我又碰上了一次。迁移时旧地址 301 到新站 CDN 把 301 缓存了一年 后来发现映射写错 源站改回 200 并修好跳转 边缘节点还在回 301 用户和蜘蛛一直被送去错误页面 清了源站缓存也没用

第一反应是「缓存键里带了域名 清一个域名另一个还在」,验证下来不成立。

这类报错背后常见的原因有几处,逐个排除就行。301 被 CDN 按永久缓存处理 默认 TTL 很长;只清了源站缓存 没有逐节点 purge;浏览器也缓存了 301 本地测试看不出来。

第一件事是确认边缘返回的是不是 301

curl -sI https://www.example.com/old/1 | grep -i -E 'HTTP/|location|age'

随后对具体地址发起 purge

curl -X PURGE https://www.example.com/old/1

调整 301 的边缘缓存时间

proxy_cache_valid 301 1m;

等前面都确认过,再换一个不带缓存的 UA 复验

curl -sI -H 'Cache-Control: no-cache' https://www.example.com/old/1

怎么算真的好了,看的是同一批现象。边缘返回 200 或新的跳转目标 各节点结果一致 无痕窗口打开也正常。

提醒一点。301 在 HTTP 语义里可以永久缓存 中间任何一层都可能替你记住错误 改跳转前先想清楚。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189