apache - 拒绝子目录 htaccess 中的所有内容,而不是覆盖根 htaccess 中的文件规则

标签 apache .htaccess

我遇到了一种情况,我试图拒绝访问我网站子目录中的所有文件。我已经向这个子目录添加了一个 htaccess 文件,并向它添加了拒绝所有指令。但是,我在站点根目录中还有一个 htaccess 文件,它允许特定的文件类型,而且这些文件类型似乎仍然可以在子目录中访问,即使我不再想要它们。我有一个解决方法(见下文),但我觉得必须有更好的方法。这是我的两个 htaccess 文件:

根.htaccess

# Deny access to everything by default
Order Deny,Allow
deny from all

# Allow access to html files
<Files *.html>
    allow from all
</Files>

子目录 .htaccess
# Deny access to everything
deny from all

解决方法:

子目录 .htaccess
# Deny access to everything
Order Allow,Deny
deny from all
<Files *.*>
    deny from all
</Files>

这就是我想要的,但我觉得应该有一种方法可以让所有声明中的否认本身起作用。有谁知道怎么做?

最佳答案

你可以像这样拥有你的 Root .htaccess

# Deny access to everything by default
Order Deny,Allow
deny from all

# Allow access to html files
<Files *.html>
    allow from all
</Files>

# Deny access to sub directory
<Files subdirectory/*>
    deny from all
</Files>

子目录中不需要单独的 .htaccess。

在第一种情况下,您允许访问根目录中 .htaccess 中的所有 html 文件,而不是在子目录中的任何位置拒绝它。 Apache 解析您的所有规则并使用最后一个匹配规则,这与防火墙(使用第一个规则匹配命中)不同。首先阅读全局规则,然后阅读特定规则。

关于apache - 拒绝子目录 htaccess 中的所有内容,而不是覆盖根 htaccess 中的文件规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611770/

相关文章:

apache - 通过 Apache 的 Tomcat

java - 消化器 : Extracting node name

.htaccess - 如何做有条件的.htaccess密码保护

regex - Apache - 重定向到相同的 URL 但附加了查询字符串

php - 使用查询参数进行 301 重定向

php - 如何在 Windows 7 上安装 phpmyadmin

Apache Active Directory mod_authnz_ldap 不工作

.htaccess - 如何设置 htaccess 和 mod_rewrite 以使用域通配符?

apache - 将 HTTP 重定向到 HTTPS,将 WWW 重定向到非 WWW URL

php - 是否可以重定向到新地址而不是显示 404 错误页面?