【问题标题】:What is location for standard Apache Error Document for 404?404 的标准 Apache 错误文档的位置是什么?
【发布时间】:2014-10-12 04:37:13
【问题描述】:

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

【问题讨论】:

  • 务实。 grep -r ....

标签: apache httpd.conf


【解决方案1】:

回答我自己的问题:

错误来自“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;

【讨论】:

    【解决方案2】:

    它可能在/usr/share/apache2 下。在我的系统上,该文件是/usr/share/apache2/error/HTTP_NOT_FOUND.html.var。也许您的 grepping 没有找到它,因为它是一个类型映射文件(有关详细信息,请参阅thesepages)。

    【讨论】:

    • 试过了。重命名/删除此文件并重新加载 apache 仍然会产生我在问题中提到的相同的 html 错误文档。请注意,我的 httpd.conf 目前没有任何错误覆盖。
    • 只是添加 - 如果我覆盖 httpd/conf 中的错误文档并提供不存在的 html 引用,如下所示 ErrorDocument 404 /non-existing.html 那么我也会得到与另一个相同的 Not Found 错误行“另外 /non-existing.html 未找到”
    • @user1401472 我猜 Apache 还内置了一个硬编码的默认值,用于找不到该文件的情况。如果您还想了解更多信息,则应该将其放在您原来的问题中。
    • 我不想知道的比我在问题中提到的更多。我只是想让您知道,我尝试了您提到的方法,但没有帮助。
    • @user1401472 我没有提到任何操作。
    【解决方案3】:

    Apache 2.4 标准错误消息的位置在可执行文件内。如果您使用一些十六进制编辑器查看可执行文件,您可以轻松找到它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2015-12-02
      • 2020-06-18
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      相关资源
      最近更新 更多