根据 Apache 文档,将AllowOverride
和AllowOverrideList
选项设置为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
。(当保留为默认它确实似乎按照文档正确解释。)