如何在 Apache2 中为 VirtualHost 指定 ErrorDocument?

如何在 Apache2 中为 VirtualHost 指定 ErrorDocument?

我有一个 Apache 2 服务器,它有几个具有类似定义的虚拟主机:

<VirtualHost *:80>
    DocumentRoot /var/www/html/host1/
    ServerName host1.loc
    <Directory /var/www/html/host1>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html/host2/
    ServerName host2.loc
    <Directory /var/www/html/host2>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>
...
<VirtualHost *:80>
    DocumentRoot /var/www/html/hostN/
    ServerName hostN.loc
    <Directory /var/www/html/hostN>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>

我想自定义404页面。

问题是,当我尝试在任何主机上测试 404 页面时,我可以从最后一个虚拟主机看到该页面。我的配置可能有什么问题?

答案1

将 ErrorDocument 指令放入 Directory 标签内。

树干:https://httpd.apache.org/docs/trunk/custom-error.html

2.2:https://httpd.apache.org/docs/2.2/mod/core.html#errordocument

自定义错误文档使用 ErrorDocument 指令进行配置,该指令可用于全局、虚拟主机或目录上下文。如果 AllowOverride 设置为 FileInfo,则可在 .htaccess 文件中使用。

答案2

使用 html 文件而不是 php 文件。

ErrorDocument 404 /custom_error_404.html

相关内容