我正在尝试让 apache 服务器针对无效子域发出自定义 404 错误。以下是 httpd 配置的相关部分:
Alias /err/ "/var/www/error/"
ErrorDocument 404 /err/HTTP_NOT_FOUND.html.var
<VirtualHost *:80> # the default virtual host
ServerName site_not_found
Redirect 404 /
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias ??.example.com
</VirtualHost>
我得到的却是这样的:
未找到
该服务器上未找到所请求的 URL /。
此外,尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
我不明白为什么一个 URL 会non-existent-subdomain.example.com
产生没有自定义错误的 404 错误(如上所示),而一个 URL 会eg.example.com/non-existent-file
产生完整的自定义 404 错误。
有人能就此提出建议吗?谢谢。
答案1
有趣的是,该语法仅记录用于410
状态代码。
无论如何,使用Redirect 404 /
解释了无法提供自定义错误页面的原因——它Redirect
也受到 的影响。
为虚拟主机提供404
其自己的空DocumentRoot
是一个选择,因为它可以“正常”处理404
请求,而无需将其全局应用于虚拟主机中的所有内容(包括错误页面)。
或者.. 如果Redirect
适用于 404,也许RedirectMatch
也可以?
RedirectMatch 404 ^/(?!err)