排查永久重定向是否生效时,缓存造成的假象通常表现为:浏览器、代理或搜索引擎仍返回旧地址或旧状态码,而服务器端其实已经配置了新规则。要排除它,核心原则是绕过本地与中间缓存,直接观察服务器响应,再分场景判断缓存层级,最后用复查确认。
永久重定向的“假象”可能来自三个不同位置,处理方式完全不同:
判断顺序建议从最靠近你的那一层开始:先确认本地浏览器,再确认代理/CDN,最后才看搜索引擎。
命令行工具默认不读取浏览器缓存,是排除本地假象的首选。以假设的旧地址 http://example.com/old 为例:
curl -I http://example.com/old
观察返回的 HTTP/1.1 301 Moved Permanently 与 Location 头。如果这里显示的是新目标地址,而浏览器仍跳旧地址,问题基本可锁定在浏览器缓存。
再验证是否命中代理缓存,可加一个随机查询参数强制回源:
curl -I "http://example.com/old?cachebust=abc123"
如果带参数时返回新地址、不带参数时返回旧地址,说明中间层缓存了旧响应。适用条件是你能控制或联系到该代理/CDN;如果无法干预,只能等待其缓存过期。
确认是缓存假象后,有两种常见处理路径,选择依据是缓存位置和你能控制的范围:
如果旧地址返回的是301,浏览器可能长期保留,此时“等”往往不如“主动清”有效;如果旧地址返回的是302,缓存时间短,自然失效通常足够。这是两者的关键分界。
复查要换环境、换工具,不要用同一个已缓存的浏览器反复看:
Location。如果命令行、无痕窗口、另一网络三处结果一致,说明重定向配置本身已生效,剩下的差异属于缓存或索引延迟。
挑一个你怀疑被缓存掩盖的旧地址,先跑一次 curl -I,再与浏览器结果对比。两者不一致时,按“浏览器→代理/CDN→搜索引擎”的顺序逐层清除或等待,而不是反复改动已经正确的重定向规则。