Apache ErrorLog:无法在 401 ErrorDocument 指令中使用完整 URL --- 忽略

Apache ErrorLog:无法在 401 ErrorDocument 指令中使用完整 URL --- 忽略

我使用 Apache 上的 .htaccess 文件来显示自定义错误文档。这一切也都运行正常。

但我仍然在日志中看到很多这样的错误:

[Thu Aug 13 10:38:31 2020] [notice] [client AH00113: /home/www/.htaccess:6 cannot use a full URL in a 401 ErrorDocument directive --- ignoring!

我的 .htacess 第 6 行看起来很简单:

ErrorDocument 401 http://error.foo.bar/401.html

为什么 401 ErrorDocument 指令中不能使用完整 URL?是错误还是功能?

答案1

您只能使用本地 URL 路径来响应代码 401。这是因为

当您指定指向远程 URL 的 ErrorDocument(即任何带有 http 等方法的内容)时,Apache HTTP Server 将向客户端发送重定向,告诉它在哪里可以找到文档,即使文档最终位于同一台服务器上。这有几个含义,最重要的是客户端将不会收到原始错误状态代码,而是会收到重定向状态代码。这反过来会使网络机器人和其他尝试使用状态代码确定 URL 是否有效的客户端感到困惑。此外,如果您在 ErrorDocument 401 中使用远程 URL,客户端将不知道提示用户输入密码,因为它不会收到 401 状态代码。因此,如果您使用 ErrorDocument 401 指令,那么它必须引用本地文档。

相关内容