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

404的标准Apache错误文档的位置是什么?,apache,httpd.conf,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&

我正在为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>

404找不到
找不到
在此服务器上找不到请求的URL/未找到


本地主机端口80上的Apache/2.2.15(CentOS)服务器
我的httpd.conf没有任何ErrorDocument覆盖。所以这是标准的apache错误。当我grep时,我找不到任何包含这些文本的文件


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

它可能位于
/usr/share/apache2
下。在我的系统上,文件是
/usr/share/apache2/error/HTTP\u NOT\u FOUND.html.var
。可能是因为它是一个类型映射文件,所以您的格雷普没有找到它(请参阅以获取详细信息)。

回答我自己的问题:

错误来自“c”文件,apache没有我最初认为的默认错误html

请参阅“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;
未找到案例:
ap_rvputs(r,“请求的URL”,
ap_escape_html(r->pool,r->uri),
在此服务器上找不到“。

\n”,NULL); 打破


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

尝试过。重命名/删除此文件并重新加载Apache仍然会生成与我在问题中提到的相同的html错误文档。请注意,我的httpd.conf没有任何错误现在出现错误。只需添加-如果我覆盖httpd/conf中的错误文档,并给出一个不存在的html引用,如下ErrorDocument 404/non-existing.html,那么我还会在另一行“additional/non-existing.html Not Found”中得到相同的未找到错误@user1401472我想Apache也有一个硬编码的默认内置文件,用于找不到该文件的情况。如果您想知道更多信息,您应该将其放在原始问题中。我不想知道比我在问题中提到的更多的信息。我只想让您知道,我尝试了您提到的内容,但没有帮助。@user1401472我没有提到任何行动。要务实。
grep-r….