Catchall 重定向至错误页面

Catchall 重定向至错误页面

这是我的另一篇文章的续篇:捕获所有 VirtualHost 不工作的情况

我已经让万能 VirtualHost 正常工作了。但我知道如何让它重定向自定义错误页面,例如 404。

在我的 VirtualHost 中我添加了Redirect 404 /,它会带我到默认的 404 页面。但是当我启用时,ErrorDocument 404 /errors/index.php我收到以下错误

Not Found

The requested URL / was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

以下是我的综合配置

<VirtualHost *:80>
    DocumentRoot /var/www/main
    ServerName null

    Redirect 404 /
    ErrorDocument 404 /errors/index.php

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

答案1

这是因为Redirect 404 /即使尝试访问,也会受到影响/errors/index.php

当给出 时404 Not Found,您不需要将所有内容重定向到根目录。我建议为/ie中不/index.html存在的虚拟主机提供可读的错误消息200 OK,并将其用作ErrorDocument 404 /提供404与所有其他 URL 相同的内容。当您已经给出 时,位置不需要更改404 Not Found

<VirtualHost *:80>
    ServerName null

    DocumentRoot /var/www/main
    ErrorDocument 404 /

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

相关内容