404的标准Apache错误文档的位置是什么?

时间:2014-08-19 06:55:14

标签: apache httpd.conf

我正在为apache定制各种错误代码,我知道这样做的方法。 (通过添加新页面并在/etc/httpd/conf/httpd.conf中针对各种错误代码引用它们。

我的问题是 - apache的标准错误消息来自哪里?例如,如果我运行本地apache并尝试浏览不存在的URL,则会出现以下错误。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /not_found was not found on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address>
</body></html>

我的httpd.conf没有任何ErrorDocument覆盖。所以这是标准的apache错误。当我grep时,我找不到任何包含这些文本的文件。

那么这是否意味着这是来自apache模块?

3 个答案:

答案 0 :(得分:4)

回答我自己的问题:

错误来自“c”文件,而apache没有我最初想到的默认错误html。 Httpd源可以是http://httpd.apache.org/download.cgi

请参阅“src \ main \ http_protocol.c”文件,下面是使用给定消息抛出404异常的代码。

case NOT_FOUND:
        ap_rvputs(r, "The requested URL ",
              ap_escape_html(r->pool, r->uri),
              " was not found on this server.<P>\n", NULL);
        break;

答案 1 :(得分:0)

它可能在/usr/share/apache2之下。在我的系统上,文件为/usr/share/apache2/error/HTTP_NOT_FOUND.html.var。也许你的grepping找不到它,因为它是一个类型映射文件(详见these pages)。

答案 2 :(得分:0)

Apache 2.4标准错误消息的位置在可执行文件中。如果你用一些十六进制编辑器查看可执行文件,你可以很容易地找到它们。