Apache优先解析index.php的关键是将其置于DirectoryIndex指令首位,确保按序匹配时最先找到;需同时启用PHP模块并正确映射.php后缀,必要时可用.htaccess局部覆盖,修改后须重启或重载服务。

让 Apache 优先解析 index.php,关键不是“解析”本身,而是让它**在查找默认首页时,把 index.php 排在最前面**。Apache 不会主动“解析 PHP”,它只是按顺序检查文件是否存在;一旦找到匹配的文件,就交给对应的处理器(比如 PHP 模块)去执行。
1. 修改 DirectoryIndex 顺序
这是最直接有效的做法。Apache 默认可能设为 index.html index.htm index.php,所以即使目录下同时有 index.html 和 index.php,它也会先返回 HTML 文件。
- 打开 Apache 配置文件(如
httpd.conf或虚拟主机配置段) - 找到或添加
DirectoryIndex行,确保index.php在最左端:
多个文件名之间用空格分隔,顺序即匹配顺序。Apache 从左到右逐个检查物理文件是否存在,遇到第一个存在的就停止并返回。
2. 确保 PHP 模块已启用且 .php 正确映射
即使 index.php 被选中,如果 PHP 没配置好,浏览器可能下载该文件、显示源码,或报 500 错误。
立即学习“PHP免费学习笔记(深入)”;
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确认
php_module已加载:运行httpd -M | grep php(CentOS/RHEL)或a2enmod php && apache2ctl -M | grep php(Debian/Ubuntu) - 检查是否有
AddHandler或SetHandler将.php后缀绑定到 PHP 处理器,例如:
在 Apache 2.4+ 配合 PHP-FPM 时,应使用:
SetHandler "proxy:fcgi://127.0.0.1:9000"并确保 mod_proxy_fcgi 已启用。
3. 使用 .htaccess 局部覆盖(无需主配置权限)
适用于共享环境、Docker 容器或只想对某目录生效的情况。
- 在目标目录下新建或编辑
.htaccess - 写入:
注意:.htaccess 中的设置会完全替代全局配置,不合并;且需确保对应目录的 AllowOverride 允许 Indexes(或设为 All)。
4. 验证与常见问题
改完必须重启或重载 Apache(如 sudo systemctl restart httpd),仅重载配置有时不刷新索引顺序。
- 测试:在网站根目录放一个
index.php(内容<?php echo 'PHP is working'; ?>),访问域名根路径 - 若仍返回
index.html,说明DirectoryIndex未生效或顺序不对 - 若看到源码或被下载,说明 PHP 模块未启用或
.php未正确关联处理器 - 查看
error_log可快速定位模块加载失败、路径错误等问题


















