必须用index.php:需动态逻辑(如用户登录、数据库读取、微信分享签名生成);index.html仅适用于静态展示。服务器默认优先加载index.html是因DirectoryIndex配置,非文件本身更优。

index.html 和 index.php 没有绝对的“更好”,只看你要解决什么问题——静态展示就用 index.html,需要动态逻辑(比如用户登录、数据库读取、微信分享签名)就必须用 index.php。
什么时候必须用 index.php
- 页面内容要根据用户身份、时间、请求参数实时变化
- 需要连接数据库(如读取最新文章、商品列表)
- 表单提交后要处理数据(例如联系表单发邮件、注册存用户)
- 微信 JS-SDK 分享必须由后端生成
signature,前端index.html拿不到有效签名 - 使用 WordPress、Typecho 等 CMS,核心就是靠
index.php路由和模板分发
注意:index.php 文件存在且可执行,前提是服务器装了 PHP 并已启用。Nginx 默认不解析 PHP,Apache 也要确认 mod_php 或 php-fpm 正常工作。
为什么 index.html 经常“先被打开”
这不是文件本身更优,而是服务器配置决定的。Apache 的 DirectoryIndex 指令默认是:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
DirectoryIndex index.html index.htm index.php
意味着它按顺序找:先找 index.html,存在就返回;不存在才查 index.htm;再找不到才轮到 index.php。
所以你放一个空的 index.html,就能临时挡住 index.php —— 这常用于网站上线前的“维护页”。
但反过来说,如果你删了 index.html 却忘了检查 DirectoryIndex 是否包含 index.php,访问根路径就会直接 404。
立即学习“PHP免费学习笔记(深入)”;
混用时容易踩的坑
- 同目录下同时存在
index.html和index.php,但你以为用户看到的是 PHP 版,其实服务器返回了 HTML 版(因为顺序优先) - 把
index.php当静态页直接双击打开(file://协议),PHP 代码不会执行,只会原样显示或报错 - 在 Nginx 上没配
try_files $uri $uri/ /index.php?$query_string;,导致伪静态路由失效,点内部链接直接 404 - 微信分享调试时,前端用
index.html加载 JS-SDK,但签名接口写在index.php里却没正确响应,结果config:invalid signature
真正关键的不是选哪个文件名,而是清楚自己要什么能力、服务器支持什么、以及配置是否匹配。很多“打不开”“不生效”的问题,根源都在这一层。


















