删掉 Indexes 是最稳妥的做法,因 Apache 的 Options 指令为覆盖式生效,删除后仅禁用目录列表,其余功能(如 FollowSymLinks、ExecCGI)保持不变;而 Options -Indexes 或 Options None 易引发 403 或异常。

Indexes 就行,别加减号、别留空、别只写 Options None——否则可能 403 报错或功能异常。
为什么删掉 Indexes 是最稳妥的做法
Apache 的 Options 指令是“覆盖式”生效的,不是叠加。原始配置像 Options Indexes FollowSymLinks Includes ExecCGI,表示启用这四项;删掉 Indexes 后变成 Options FollowSymLinks Includes ExecCGI,其他行为(如符号链接、CGI 执行)全保留,只关目录列表。
常见错误包括:
- 写成
Options -Indexes:在旧版 Apache( - 写成
Options None:会禁用所有选项,FollowSymLinks失效 → 虚拟主机、重写规则、软链接路径全挂 - 只改了全局
<directory></directory>块,却漏掉<directory></directory>这个实际网站根目录块
在哪改?Windows 和 Linux 路径不同
必须定位到你网站内容实际所在的 <directory></directory> 块,不是随便找一个 Options 行就改。
- Windows XAMPP:
C:\xampp\apache\conf\httpd.conf,搜索<directory></directory> - Linux XAMPP:
/opt/lampp/etc/httpd.conf,搜索<directory></directory> - Mac XAMPP:
/Applications/XAMPP/xamppfiles/etc/httpd.conf,搜索对应 htdocs 路径
找到后确认里面是类似这样的行:Options Indexes FollowSymLinks Includes ExecCGI
把它改成:Options FollowSymLinks Includes ExecCGI
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
改完不重启 = 白改,且容易误判是否生效
Apache 不会热加载配置文件,改完必须重启服务才能生效。不要只点 XAMPP 控制面板的「Start」,要确认状态是「Running」,且没有报错日志。
- Windows 下可双击运行
xampp/apache/apache_start.bat,终端窗口会实时显示启动日志,如果看到Syntax error on line XX就说明Options那行写错了 - Linux 下执行
sudo /opt/lampp/lampp restart,再检查tail -n 20 /opt/lampp/logs/error_log - 验证是否成功:访问一个没有
index.html的子目录(如http://localhost/test/),应返回 403 Forbidden,而不是列出文件列表
额外安全项:别只盯着 Indexes
禁掉目录列表只是基础。真实风险常来自其他暴露点:
-
server-status和server-info默认可能开着,搜SetHandler server-status并注释整段<location></location> - 敏感文件如
.env、config.inc可被直接下载,建议加<files></files>块并Deny from all - 如果你用的是 PHP,确保
AllowOverride All只出现在需要 .htaccess 的目录,其他地方设为None防止被覆盖
真正容易被忽略的是:改完配置后没清浏览器缓存,或者用的仍是旧 DNS 缓存/代理,导致你以为没生效——换隐身窗口或 curl -I http://localhost/test/ 直接看 HTTP 状态码更可靠。

















