针对不同 Apache 版本允许、拒绝或要求 .htaccess 中的所有内容

针对不同 Apache 版本允许、拒绝或要求 .htaccess 中的所有内容

当我们想要使用 .htaccess 文件阻止机器人、垃圾邮件引荐来源时,一些网站使用以下代码语法:

Order allow,deny
Allow from all
Deny from env=spambot

但是有些网站告诉我们,不同的 Apache 版本需要使用不同的代码:

#For Apache 2.2
<IfModule !mod_authz_core.c>
<IfModule mod_authz_host.c>
    Order allow,deny
    Allow from all
    Deny from env=spambot
</IfModule>
</IfModule>

# For Apache 2.4
<IfModule mod_authz_core.c>
<RequireAll>
    Require all granted
    Require not env spambot
</RequireAll>
</IfModule>

现在我想知道哪个锥体是正确的或者两个都是正确的?

答案1

我们需要针对不同的 Apache 版本使用不同的代码

这。

语法从 Apache 2.2 更改为 2.4。但是,旧语法(Apache 2.2)被保留(实际上,它被移至不同的模块:修改 mod_access_compat) 为了仅向后兼容- 所以它仍然“有效”。但它已被弃用,并可能在未来版本中被删除。因此,Apache 2.4 上的代码应该使用该Require ...语法。

答案2

禁用对任何文件夹的完全访问,在文件夹内添加 .htaccess 中的代码

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

相关内容