检查自定义404错误页之前,最需要准备的不是服务器权限,而是一份能复现问题的访问记录:你请求了哪个URL、期望看到什么、实际返回了什么状态码、响应正文是什么。缺少这四项信息,后续无论查服务器配置、应用路由还是CDN规则,都只能靠猜。下面从一个假设场景展开,说明准备清单和常见错误。
假设你负责的站点最近改版,旧路径 /old-guide 已下线,你希望访问它时看到自定义404页面。现在需要准备的第一项信息,就是把这个请求固定下来:
https://example.com/old-guide?from=nav。Host、User-Agent、Accept 和 Cookie。某些站点会根据语言或登录状态返回不同页面。这一步的常见错误是只记路径不记主机名。同一台服务器可能绑定多个域名,不同域名下的404处理规则完全不同。另一个错误是忽略查询字符串,有些应用会把带参数的请求交给不同路由处理。
“页面不对”不是可检查的信息。你需要记录服务器实际返回的内容,至少包括:
Content-Type、Content-Length 以及是否存在重定向相关的 Location。获取这些信息可以用浏览器开发者工具的Network面板,也可以用命令行工具。命令行方式便于复制和比对,例如:
curl -I https://example.com/old-guide
这只取响应头。若要同时看正文和状态码,可去掉 -I,并加上 -o 把正文写入文件。注意,不同工具对重定向的默认处理不同,比较结果时要统一参数。
有了请求样本和响应记录,下一步要准备的是“当前规则是什么”。检查自定义404错误页,通常涉及以下几类配置,你需要提前知道它们各自在哪里、由谁维护:
error_page 指令、Apache的 ErrorDocument 指令。确认自定义页面的文件路径是否真实存在。这里常见的错误是把“配置了自定义页面”等同于“自定义页面已生效”。配置项存在、文件存在、请求命中该配置,是三件不同的事。检查时要逐层确认,而不是只看其中一层。
同一个现象可能有多个解释。例如访问旧路径时看到服务器默认404页,可能原因包括:自定义404配置未生效、自定义页面文件路径写错、请求被CDN拦截、应用在到达Web服务器错误处理前就返回了响应。这些只是可能原因,不能直接当成结论。
要定位原因,可以用对比法:
只有当某一项差异能稳定复现,并且排除其他变量后,才能说“已经定位到原因”。在此之前,记录应写成“可能原因”,便于后续验证。
把上面的内容压缩成一份可执行清单,检查自定义404错误页前至少准备:
如果缺少第2项,你无法判断当前行为;缺少第5项,你无法知道去哪里改。两者缺一,检查就会变成反复试错。
下一步:用你手头的一个真实旧URL,按上面的清单补齐请求样本和响应记录,再对照三层配置逐项核对,把“可能原因”逐条标记为已排除或待验证。