禁用 apache 目录列表的核心是配置 options -indexes。需在每个相关 块中显式关闭 indexes,同时保留 followsymlinks 等必要选项;配合 directoryindex 指定默认首页,并重启服务后通过无索引目录验证 403 响应是否生效。

在 Apache 的 <directory></directory> 配置块中禁止列出目录,核心是禁用 Indexes 选项——这是唯一真正起效的方式。不是靠删文件、改权限或隐藏路径,而是明确告诉 Apache:“不许展示文件列表”。
直接写 Options -Indexes
在对应目录的 <directory></directory> 块里,把原有的 Options Indexes ... 改为:
-
Options -Indexes +FollowSymLinks +ExecCGI(推荐)——显式关闭索引,同时保留常用功能 - 或
Options FollowSymLinks ExecCGI(次选)——前提是确认不需要 Indexes,且没其他依赖 - 不要写
Options None,它会一并关掉符号链接、CGI 执行等关键能力,导致重写失效、PHP 不运行
必须检查所有相关配置位置
Apache 会按顺序加载多个配置文件,漏改任何一处都可能被绕过:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 主配置:
httpd.conf或apache2.conf - 虚拟主机:
sites-available/下的配置,或httpd-vhosts.conf - XAMPP/WAMP 环境:
httpd-xampp.conf或httpd-wamp.conf中可能覆盖 htdocs 设置 - 每个
<directory></directory>块都要单独处理,不能只改全局<directory></directory>
配合 DirectoryIndex 提升可用性
光关 Indexes 会让无首页目录直接返回 403,影响正常访问。建议在同一 <directory></directory> 块里加一行:
DirectoryIndex index.php index.html default.htm- Apache 按顺序查找第一个存在的文件;都不存在才返回 403
- 对 PHP 应用(如 WordPress、Laravel),
index.php必须放最前,否则静态页优先会破坏路由
验证是否真生效
改完必须重启服务(sudo systemctl restart apache2 或 XAMPP 控制面板点击重启),再实测:
- 准备一个真实存在、但不含
index.*文件的子目录(如/uploads/) - 浏览器访问
http://localhost/uploads/ - 正确响应应为 HTTP 403 Forbidden,页面显示 “You don't have permission to access…”
- 若仍看到文件列表,说明配置未生效——常见原因是改错文件、没重启、或被
.htaccess覆盖










