为什么即使已禁用 .htaccess 文件,Apache 仍会读取它们?

为什么即使已禁用 .htaccess 文件,Apache 仍会读取它们?

根据 Apache 文档,将AllowOverrideAllowOverrideList选项设置为None将完全忽略.htaccess文件。甚至不会尝试从文件系统读取它们。

我已将这两个选项都设置为none,但 Apache 仍然会读取.htaccess文件。我知道这一点,因为如果我将一个.htaccess包含一些有效指令的文件放入,它会抛出 500 错误。注释掉指令(本质上是一个空.htaccess文件)不会抛出 500 错误。所以显然 Apache 仍在读取.htaccess文件。

Apache2 错误日志(已清理,供公众使用):
[2020 年 7 月 30 日星期四 23:36:35.393831] [core:alert] [pid 60903] [client dddd:10554] /var/www/example/.htaccess:此处不允许要求,引用者:http://example.net/

问题是为什么?我遗漏了什么?如何让它按照文档运行?即甚至不尝试读取文件.htaccess

参考: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

当此指令设置为 None 并且 AllowOverrideList 设置为 None 时,.htaccess 文件将被完全忽略。在这种情况下,服务器甚至不会尝试读取文件系统中的 .htaccess 文件。

答案1

这似乎是 Apache 2.4 早期版本中的一个错误,据报道已在 Apache 2.4.20 中修复
https://bz.apache.org/bugzilla/show_bug.cgi?id=58528

该错误似乎是在明确设置AllowOverrideList None值时没有正确重置

我已经验证在 Apache 2.4.7 中看到了相同(不正确)的行为

如果你从未AllowOverrideList在服务器配置的其他地方设置过,那么你可以省略此指令,因为默认None。(当保留为默认它确实似乎按照文档正确解释。)

相关内容