网站404处理时遇到“明明已经修好,访问还是404”,最常见的干扰就是缓存。要排除缓存造成的假象,核心做法是:先用带随机参数的URL或强制刷新观察源站响应,再用不同网络、不同工具分别请求同一地址,对比状态码和响应头。如果源站已返回200或301,而浏览器或中间层仍显示404,问题多半在缓存;如果所有请求都返回404,则应回到服务器配置、文件路径或重定向规则上查。
404可能来自源站应用、CDN节点、反向代理、浏览器缓存,也可能是搜索引擎自己保留的旧结果。判断起点是看响应头,而不是只看页面文字。用浏览器开发者工具的“网络”面板,或命令行请求同一URL,记录status、cache-control、age、x-cache、server等字段。
这里的“可能”需要靠多次请求验证,不能凭一次刷新就下结论。
下面这组操作适合第一次排查的人,按顺序做,每步都记录结果。
?test=20240601,重新请求。若返回正常,而原URL仍404,说明原URL被缓存。curl -I https://example.com/page。把返回的状态码与浏览器结果对比。适用条件是:你拥有源站或CDN的操作权限,且能区分“刷新缓存”和“修改源站”。如果刷新后立刻恢复、过一段时间又变回404,说明源站仍在返回404,缓存只是把错误结果放大了。
以下情况出现时,应停止在缓存上打转:
age、x-cache等缓存命中迹象。另外,HTTPS 只表示传输加密,不保证页面一定可访问,也不保证排名。把404归因于“没上HTTPS”通常没有依据。
处理完成后,至少做三项复查:第一,用原URL、带参数URL、无痕窗口分别请求,确认状态码一致;第二,查看CDN缓存命中率和源站日志,确认后续请求不再命中旧404;第三,若涉及搜索引擎结果,使用对应平台的URL检查工具分别核查,不要假设所有搜索引擎同步更新。
假设一个场景:某页面已从服务器删除并配置301到新页面,但浏览器仍显示404。此时先请求带随机参数的URL,若返回301,说明重定向已生效;原URL仍404,则是旧缓存未过期。刷新CDN缓存并等待TTL结束后,原URL应返回301。若刷新后仍404,就要检查重定向规则是否只对新URL生效。
下一步:选定一个仍显示404的URL,按“带参数请求→无痕访问→命令行看响应头→刷新CDN→复查日志”的顺序走一遍,把每一步的状态码记下来,再决定是继续清缓存还是改源站配置。