判断“首选域名设置没生效”时,先别急着改配置。最常见的情况是:设置本身已经生效,但你看到的仍是缓存返回的旧页面。排除缓存假象的可靠方法是同时对比三样东西——浏览器实际收到的响应头、跳转链路、以及不同网络环境下的结果。三者一致才说明设置真的生效;只有浏览器页面变了或没变,都不足以作为判断依据。
“缓存”在首选域名这个问题上至少涉及四层,排查时要逐层排除,不能混在一起下结论。
多人协作时,最容易返工的原因就是每个人看到的层不同,却都声称“我这边是对的”。交付前必须约定统一口径:以响应头和跳转链路为准,不以肉眼看到的页面为准。
首选域名设置的核心表现是:访问非首选域名时返回 301 或 308,并指向首选域名。判断它是否生效,看的是响应状态码和 Location 头,而不是地址栏最终停在哪里。
可以执行的检查步骤:
curl -I http://example.com(把域名替换成你自己的)。Location 是否指向首选域名。curl -I https://example.com 重复一次,确认 HTTP 和 HTTPS 两个入口都指向同一目标。如果响应头符合预期,但浏览器里仍看到旧域名,问题基本可以定位在浏览器缓存或本地 DNS,而不是服务器设置。反之,如果响应头本身就不对,那和缓存无关,应该去检查服务器配置或 CDN 规则。
同一台设备、同一个网络只能证明一个点。要排除缓存假象,至少换两个变量复查:
?v=20240101,用于判断页面级缓存是否在起作用。注意这只对页面缓存有效,对 301 跳转缓存往往无效。判断标准很直接:如果换网络、换设备后结果一致,说明是真实配置;如果只在某一台设备或某一个网络下异常,优先怀疑缓存。这里要注意,301 被浏览器长期缓存是常见现象,清理浏览器缓存或用无痕窗口往往比反复改配置更有效。
首选域名设置属于基础设施改动,一旦多人同时操作,很容易出现“改了一半、缓存没刷、结论互相矛盾”的局面。建议按下面的顺序交付,减少返工:
curl -I 的响应头结果贴进交付记录,作为唯一判断依据,而不是截图浏览器地址栏。现在就可以做一件事:对非首选域名的 HTTP 和 HTTPS 各执行一次 curl -I,把状态码和 Location 记下来。如果这两条都正确指向首选域名,就不要再纠结浏览器里看到什么,直接去清理本地缓存和 DNS;如果响应头不对,就先修配置,缓存问题留到配置确认之后再处理。