Require all denied表示拒绝所有用户访问,仅在所处<Directory>等配置块内生效,不自动继承子目录,功能等效于Apache 2.2的deny from all但机制不同,须避免混用新旧语法。
Require all denied 是 Apache 2.4+ 中最基础、最严格的访问控制指令,作用就是彻底禁止所有客户端对当前配置作用域(如某个目录、路径或位置)的访问。
该指令只在它所处的配置块内生效,比如 <Directory>、<Location> 或 <Files> 块中。它不会影响其他路径,也不会自动继承到子目录——除非子目录也显式配置了相同规则或未覆盖父级限制。
<Directory "/var/www/html/admin"> 里,就只封掉 /admin 目录/admin/api 没单独配置,会沿用父级的 Require all denied
/admin/api 块里写了 Require all granted,那这里就会被放行功能完全等效,但底层机制不同:
Order、Allow、Deny 三者配合Require 是核心,Require all denied 就是最终兜底策略实际配置中容易踩坑的地方:
Require all denied 必须放在 <RequireAll> 外层——如果把它塞进 <RequireAll> 里面,Apache 会忽略它,因为 <RequireAll> 只处理“需要同时满足”的条件,而 all denied 是无条件拒绝Require host example.com 在本地开发环境基本无效,因依赖 DNS 反向解析,建议测试阶段优先用 Require ip 127.0.0.1 或 Require local
Require ip 192.168.1.0/24 10.0.0.0/8,要拆成两行,或用 <RequireAny> 包裹这不是一个“随便加”的指令,而是有明确防护意图的配置:
/wp-admin、/admin),配合 IP 白名单使用