我想通过 .htaccess 拒绝对给定文件夹中的所有文件和子目录的访问。我发现了以下两种方法:
deny from all
<Files "*">
Order Deny,Allow
Deny from all
</Files>
这两者有区别吗?
答案1
如评论中所述,Deny
和Order
指令以前在 Apache 2.4 上已弃用(我假设您正在使用 - 见下文)。和仅用于向后兼容(mod_access_compat)。这些应该只用于Apache 2.2以及更早的时候。
deny from all
是的,这确实“拒绝”对当前目录、文件和子目录的所有访问。但是,如果不明确说明和指令Order
在何处处理,那么它如何与相关指令交互就没有明确定义。Deny
Allow
Allow
子目录.htaccess
文件中的指令应该覆盖此。
<Files "*"> Order Deny,Allow Deny from all </Files>
通过将指令包装在<Files>
容器中,可以强制合并块晚的Allow
。与上例不同,这可能会覆盖子目录中的指令。除非Allow
子目录中的指令也包含在<Files>
容器中。这可能是可取的,也可能不是。在大多数情况下,这不是必需的。
只是*
一个匹配所有文件(和目录)的通配符。
在Apache 2.4您应该改用Require
指令(mod_authz_core):
Require all denied
关于容器的相同内容<Files "*">
也适用于此。