不存在的子域中未找到 ErrorDocument 404

不存在的子域中未找到 ErrorDocument 404

我正在尝试让 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)

相关内容