DirectoryIndex 指令用于指定访问目录时优先查找的默认文件列表,按空格分隔、严格大小写匹配,需置于内的块中并重载配置生效。
Indexes:控制目录是否可被列示
当用户访问一个目录,且该目录下没有匹配 directoryindex 指定的首页文件(如 index.php、index.html)时,apache 会默认尝试生成并显示该目录下的文件和子目录列表——这个行为由 indexes 选项控制。
开启它(Options +Indexes 或 Options Indexes)等于主动暴露路径结构,对 uploads/、config/、logs/ 等敏感目录是严重风险。生产环境必须禁用。
正确禁用方式是显式减去:Options -Indexes。不要写成 Options None,否则会一并关闭 FollowSymLinks、ExecCGI 等必要功能,导致重写规则失效或 PHP 脚本无法执行。
FollowSymLinks:允许解析符号链接
启用 FollowSymLinks 后,Apache 可以顺着目录中的软链接(symbolic link)跳转到真实路径并提供内容。这是开发中常需的功能,比如将 vendor/ 或 storage/ 链接到外部位置。
但要注意安全边界:SymLinksIfOwnerMatch 是更严格的替代方案——仅当链接文件与目标文件属主一致时才跟随,能防范恶意链接指向系统关键路径。
常见组合写法:Options -Indexes +FollowSymLinks,既屏蔽目录浏览,又保留链接能力。
ExecCGI:启用 CGI 脚本执行
ExecCGI 允许 Apache 在该目录下执行 CGI 程序(如 .pl、.py、.cgi 文件)。它本身不危险,但若出现在上传目录或静态资源目录,就可能被利用执行任意代码。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
高危路径应明确禁用:Options -ExecCGI -Includes -Indexes。配合 SetHandler default-handler 可强制以纯文本方式返回文件内容,彻底阻止脚本解析。
注意:PHP 脚本的执行不依赖 ExecCGI(而是由 mod_php 或 FPM 处理),所以 Web 应用根目录通常无需开启此项;只有明确需要跑 Perl/Python CGI 的场景才启用。
其他实用要点
• MultiViews 必须显式声明,Options All 不包含它;启用后支持基于 Accept 头自动选择语言/格式版本(如 hello.en.html / hello.zh.html)
• 符号 + 和 - 可混合使用,例如:Options +FollowSymLinks -Indexes +ExecCGI
• Apache 按最长路径匹配生效的
• 修改后必须重启服务(systemctl restart apache2 或 XAMPP 控制面板点击重启),否则配置不生效










