根据个人经验和文档,在配置中混合新旧访问控制指令可能会出现问题,例如
老的:
Order deny,allow
Deny from all
# ...
新的:
Require all denied
从技术上讲,将旧指令(如 Order、Allow 或 Deny)与新指令(如 Require)混合使用是可行的,但不建议这样做。mod_access_compat 的创建是为了支持仅包含旧指令的配置,以方便 2.4 升级。请查看以下示例以更好地了解可能出现的问题。
...
在以下示例中,混合使用新旧指令会导致意外结果。
我想转换为新指令。在一个批处理中完成此操作然后重新加载似乎是个好主意。但是,有些指令位于 .htaccess 文件中。
文档:
答案1
我建议将 .htaccess 文件中的指令更改为类似以下内容:
例子(您可能需要检查模块在您的系统上的命名方式,例如 mod_access_compat、access_compat_module):
<IfModule access_compat_module>
Order deny,allow
Deny from all
</IfModule>
<IfModule !access_compat_module>
Require all denied
</IfModule>
文档:模块
其余配置也可以通过这种方式完成,或者可以一次性完成,随后重新加载而不使用 Ifmodules(为了不使配置混乱)。
一旦 access_compat 模块被停用,新的指令就会生效。
或者,您可能需要考虑将配置从 .htaccess 文件移动到您的 Web 服务器配置,请参阅:
如果您有权访问 httpd 主服务器配置文件,则应完全避免使用 .htaccess 文件。