当我们想要使用 .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>