httaccess 中拒绝访问的不同方法

httaccess 中拒绝访问的不同方法

我想通过 .htaccess 拒绝对给定文件夹中的所有文件和子目录的访问。我发现了以下两种方法:

deny from all
<Files "*">
    Order Deny,Allow
    Deny from all
</Files> 

这两者有区别吗?

答案1

如评论中所述,DenyOrder指令以前在 Apache 2.4 上已弃用(我假设您正在使用 - 见下文)。和仅用于向后兼容(mod_access_compat)。这些应该只用于Apache 2.2以及更早的时候。

deny from all

是的,这确实“拒绝”对当前目录、文件和子目录的所有访问。但是,如果不明确说明和指令Order在何处处理,那么它如何与相关指令交互就没有明确定义。DenyAllow

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 "*">也适用于此。

相关内容