apache中目录独立访问策略核心是块,须用绝对路径精确匹配、大小写敏感,并配合require权限语句(如require all granted)、options行为控制(如-execcgi)及allowoverride none禁用覆盖,按最长路径优先继承与覆盖。

Apache 在 httpd.conf 中为每个目录设置独立访问策略,核心是用 <directory></directory> 指令块配合权限控制语句。它不是全局开关,而是按路径精确匹配、逐层生效的规则容器——路径必须写绝对路径,且与 DocumentRoot 或虚拟主机中的路径完全一致,大小写敏感。
明确指定目录路径并启用基础权限
每个 <directory></directory> 块必须包裹一个真实存在的绝对路径(如 /var/www/html/admin 或 C:/xampp/htdocs/api),不能是相对路径或通配符(除非用 /home/*/public_html 这类受支持的模式)。关键配置项包括:
- Require all granted:Apache 2.4+ 的标准放行语句,允许所有 IP 访问该目录
- Require ip 192.168.1.0/24:只允许可信局域网访问
- Require host example.com:按主机名限制(需 DNS 可解析)
- Require not host badbot.example.net:黑名单式拒绝特定来源
控制目录行为选项(Options)
Options 决定 Apache 对该目录能做什么操作,常见组合有:
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- None:禁用所有额外功能,最安全,但静态文件也无法列出或执行脚本
- Indexes FollowSymLinks:允许列目录(无 index.html 时显示文件列表),并支持符号链接跳转
- ExecCGI MultiViews:启用 CGI 脚本执行和内容协商(如自动选 .en.html 或 .zh.html)
- All:开启全部选项(不推荐,易引入风险)
注意:FollowSymLinks 若与 SymLinksIfOwnerMatch 混用,会检查链接目标文件属主是否与源目录一致,增强安全性。
限制特定目录禁止执行脚本
对上传目录、静态资源目录等高危路径,应主动禁用代码执行:
- 在对应
<directory></directory>块中加入:Options -ExecCGI -Includes -Indexes(减号表示禁用) - 添加
SetHandler default-handler强制以纯文本方式提供文件,防止 .php/.pl 文件被解析 - 搭配
AllowOverride None禁用 .htaccess 覆盖,避免被绕过
嵌套目录策略优先级与继承规则
Apache 按路径最长匹配原则选择 <directory></directory> 块,且子目录默认继承父目录权限,但可被显式覆盖:
- 若
<directory></directory>设为Require ip 10.0.0.0/8,而子目录<directory></directory>设为Require all granted,则 public 目录对外公开 - 父目录设
Options Indexes,子目录设Options -Indexes,子目录就不会显示文件列表 - 所有
<directory></directory>块必须在DocumentRoot或对应<virtualhost></virtualhost>范围内才有效










