核心操作是设置Options -Indexes +FollowSymLinks,禁用目录列表;配合DirectoryIndex index.php index.html指定入口文件;需检查所有配置文件中的<Directory>块并重启验证。

要禁用 Apache 目录浏览(即防止用户访问无首页的目录时看到文件列表),核心操作是关闭 Indexes 选项,而不是“配置”它——因为启用目录浏览本身是不安全的默认行为,生产环境应主动禁用。
明确在 块中设置 -Indexes
在虚拟主机或主配置中找到对应站点的 <Directory> 区块(路径需与 DocumentRoot 一致),将 Options 行改为显式禁用 Indexes:
- ✅ 正确写法:
Options -Indexes +FollowSymLinks - ❌ 避免写成
Options None:会一并关闭 CGI、MultiViews 等必要功能 - ❌ 不要只注释掉原行或留空:Apache 会回退到上级或全局默认值,可能仍开启 Indexes
- ⚠️ 注意符号位置:
-Indexes中的减号必须紧贴单词,不能有空格
配合 DirectoryIndex 提升可用性
仅关掉 Indexes 后,若目录下没有默认首页,请求会返回 403 Forbidden。建议同步指定入口文件,让 Apache 主动查找:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在同一
<Directory>块中添加:DirectoryIndex index.php index.html default.htm - Apache 按顺序查找第一个存在的文件;都不存在才返回 403
- 对 WordPress、Laravel 等 PHP 应用,
index.php必须靠前,否则静态页可能拦截路由
检查所有可能覆盖的配置位置
一个常见疏漏是只改了主配置,却忽略了其他地方的覆盖:
- 检查
/etc/apache2/sites-available/下各虚拟主机配置文件中的<Directory> - 检查
/etc/apache2/mods-enabled/或/etc/httpd/conf.d/中是否启用了 welcome.conf 等默认模块(它们常自带Options Indexes) - 若使用
.htaccess,确认上级<Directory>设置了AllowOverride Options或All,否则规则不生效
验证是否生效
重启 Apache 后,直接用浏览器访问一个**不含 index.* 文件的子目录**(如 /uploads/ 或 /config/):
- ✅ 正确结果:返回 403 Forbidden 页面
- ❌ 错误结果:显示带文件名的 HTML 列表页 → 配置未生效或被覆盖
- 可搭配
curl -I http://yoursite.com/uploads/查看响应头状态码快速判断

















