![Apache ErrorDocument 脚本位置](https://linux22.com/image/688640/Apache%20ErrorDocument%20%E8%84%9A%E6%9C%AC%E4%BD%8D%E7%BD%AE.png)
在 Linux 上使用 apache 2.4,有多个虚拟服务器,每个虚拟服务器都有自己的 DocumentRoot,我希望 apache 主服务器 ErrorDocument 本地重定向执行与 apache 主 DocumentRoot 相关的单个 perl 脚本,而不是每个虚拟服务器下的 perl 脚本。
发生的情况是,虚拟服务器的文档根目录用于构建文件系统路径,而不是主服务器的文档根目录。
有没有什么方法可以配置 apache 服务器以仅使用单个本地重定向脚本,而不是(显然)必须在每个虚拟服务器的 DocumentRoot 中都有一个(相同的)脚本?
答案1
您可以通过将以下指令放置在全局(服务器)上下文中(即不在任何 <VirtualHost> 块内)来设置单个全局错误文档。然后它将适用于您的所有虚拟主机。这向您展示了一个静态 HTML 文件,但可以轻松地将其修改为 perl 脚本
别名 /error-404.html /path/to/my/errors/error-404.html 错误文档 404 /error-404.html <目录“/path/to/my/errors”> 要求所有授予 </目录>
答案2
您可以将 ErrorDocument 设置为外部资源,例如
ErrorDocument 500 http://error.example.com/server_error.html
因此您只需引用主虚拟主机上的脚本即可。
不管你信不信,这都有记载ErrorLog 的文档。