这是我的另一篇文章的续篇:捕获所有 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>