最可靠方式是在对应站点的块中配置directoryindex,且路径必须与documentroot完全一致;文件名用空格分隔、严格区分大小写;修改后需reload服务并验证语法。

直接在对应站点的 <directory></directory> 块里写 DirectoryIndex 指令,就能精准控制这个站点打开目录时显示哪个文件——它不靠全局配置,也不依赖 .htaccess(除非你主动启用),是最可靠、最优先生效的方式。
配置位置必须精准匹配站点根目录
指令要放在该虚拟主机的 <virtualhost></virtualhost> 内部,并包裹在 <directory></directory> 容器中。关键点是:DocumentRoot 路径和
- 正确示例:
ServerName example.com
DocumentRoot /var/www/example
Require all granted
DirectoryIndex home.php index.php index.html
- 错误情况:路径写成
/var/www/example/(末尾多斜杠)或大小写不一致(如/Var/WWW/example),都会导致失效。
文件名写法有硬性要求
多个文件名之间只能用空格分隔,Apache 从左到右查找,遇到第一个存在的就返回。大小写必须和实际文件名完全一致(Linux 系统区分大小写)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- ✅ 正确:
DirectoryIndex welcome.html index.php default.htm - ❌ 错误:
DirectoryIndex "welcome.html" index.php(引号会被当成文件名一部分) - ❌ 错误:
DirectoryIndex welcome.html,index.php(逗号会变成文件名的一部分) - ⚠️ 注意:
WELCOME.HTML和welcome.html是两个不同文件
确保 PHP 页面能真正运行
如果设了 DirectoryIndex index.php 却看到源码或下载弹窗,说明 PHP 没被正确解析:
- 确认已安装并启用了 PHP 模块(如
libapache2-mod-php或对应版本包) - 检查是否有
AddType application/x-httpd-php .php类型声明(新版 Apache 通常自动处理) - 确认
index.php文件真实存在、权限为644、Apache 进程可读(SELinux 环境还需检查上下文)
修改后必须重载,不能只重启
配置保存后,执行以下命令让变更生效:
- Debian/Ubuntu:
sudo systemctl reload apache2 - RHEL/CentOS:
sudo systemctl reload httpd
用 reload 而不是 restart 更稳妥,它会平滑加载新配置,不中断已有连接。别忘了先用 apache2ctl configtest 或 httpd -t 验证语法是否正确。










