最稳妥方式是修改 httpd-multilang-errordoc.conf 文件中的 ErrorDocument 404 路径(如改为 /error/404.html),确保文件位于 DocumentRoot 下且静态资源路径正确,并同步关闭 ServerSignature Off 和 ServerTokens Prod,修改后需重启 Apache 生效。
直接改
文件最稳妥,别动
里的
行——XAMPP 默认已通过
加载了多语言错误页配置,硬在主配置里覆盖反而容易被忽略或冲突。
找到并编辑
XAMPP 的错误页逻辑由
控制,不是
。路径通常是:
Windows:
macOS/Linux:
打开后搜
,你会看到类似这一行:
这就是当前 404 错误的跳转路径。它指向的是 Apache DocumentRoot 下的相对路径,比如你的
是
,那实际找的就是
。
修改建议:
把
换成你自己的路径,例如
(注意开头的
,表示从 DocumentRoot 开始)
确保对应文件真实存在,且路径中不含中文、空格或特殊符号
如果用了子目录(如
),记得把整个
文件夹放进
,别只放文件
静态资源引用必须用相对 DocumentRoot 的路径
你在
里写的 CSS、图片、JS 路径,是按 Apache 的 DocumentRoot 解析的,不是按 HTML 文件所在位置。比如:
假设 DocumentRoot 是
,你把
放在
,那么里面写
,Apache 实际会去找
,而不是
。
所以有两条路可选:
所有静态资源统一放在 DocumentRoot 根下(推荐初学者)
改用绝对路径,比如
,前提是
确实在
里
漏掉这点,页面能打开但样式/图片全挂,你会以为配置没生效。
改完要不要重启 Apache?
取决于你改的是什么:
只改了
里
的路径 → 必须重启 Apache,否则不加载新规则
只改了
文件内容(没动配置)→ 不用重启,刷新即可生效
验证是否生效:访问一个肯定不存在的地址,比如
,看是否跳转到你的页面。别用浏览器缓存,加个
强刷。
为什么关掉 ServerSignature 很重要
如果你没关
和
,哪怕自定义了 404 页面,底部还是会显示 Apache 版本、PHP 版本等信息,形同虚设。
必须确认
里这两行已显式设置(通常在文件末尾附近):
常见坑:
只加了
,漏了
,响应头里照样暴露版本号
在虚拟主机块(
)里又写了
,它会覆盖全局设置
用 XAMPP 控制面板点 “Config” 打开的
是缓存副本,实际改的不是真实文件
真正生效要三验:curl 查响应头、看错误页底部、
测语法。少一个都可能白忙。
httpd-multilang-errordoc.confhttpd.confErrorDocumentIncludehttpd-multilang-errordoc.confconf/extra/httpd-multilang-errordoc.confhttpd.confC:\xampp\apache\conf\extra\httpd-multilang-errordoc.conf/opt/lampp/etc/extra/httpd-multilang-errordoc.conf404ErrorDocument 404 /404error.htmlDocumentRootC:/xampp/htdocsC:/xampp/htdocs/404error.html/404error.html/error/404.html//error/errorhtdocs404.htmlC:/xampp/htdocs404.htmlC:/xampp/htdocs/error/404.htmlC:/xampp/htdocs/logo.pngC:/xampp/htdocs/error/logo.pnglogo.pnghtdocs/error/httpd-multilang-errordoc.confErrorDocument404.htmlhttp://localhost/this-page-does-not-exist?t=1ServerSignatureServerTokenshttpd.confServerSignature Off
ServerTokens ProdOffServerTokens ProdServerTokens Fullhttpd.confhttpd -t