Web服务器默认查找的文件名不固定但有预设顺序,如Apache用DirectoryIndex、Nginx用index指令控制,常见默认为index.html、index.htm、index.php等;修改需同步调整服务器配置,否则访问目录将返回403或404。

Web 服务器默认查找的文件名是固定的
不是必须叫 index.html,但绝大多数 Web 服务器(比如 Nginx、Apache、Caddy)默认只认一组预设的文件名,index.html 是其中最通用、最优先的一个。如果你改了名字又没配置服务器,用户访问目录路径(如 / 或 /blog/)时会直接 403 或 404。
常见服务器的默认索引文件列表
不同服务器按固定顺序尝试匹配以下文件,找到第一个存在的就返回:
-
Apache:默认是
index.html、index.htm、index.php、index.cgi等(由DirectoryIndex指令控制) -
Nginx:默认是
index.html、index.htm、index.nginx-debian.html(Debian 系),可通过index指令修改 -
Vercel / Netlify:支持
index.html、index.htm,也接受404.html作兜底,但不自动 fallback 到其他名字 -
本地双击打开:浏览器不走服务器逻辑,只认你点开的那个文件——这时叫
home.html完全没问题,但不能靠目录路径自动跳转
想换名字?得改服务器配置或构建流程
单纯把文件改成 main.html 并上传,几乎一定失效。真正可行的做法包括:
- Apache:在
.htaccess或虚拟主机配置里加一行DirectoryIndex main.html - Nginx:在
server块里写index main.html index.html;(注意顺序,前面的优先) - 静态站点生成器(如 Hugo、Jekyll):通常通过
build.index或output配置控制输出文件名,但多数不支持直接输出非index.html为根路径入口——因为语义上“根路径”就该对应index - SPA 路由(React/Vue):入口仍需
index.html,否则 History 模式下刷新会 404;你只是把内容塞进它,不是替换它
容易被忽略的细节
即便服务器允许自定义索引文件,仍有几个硬约束常被忽视:
立即学习“前端免费学习笔记(深入)”;
- GitHub Pages 只认
index.html(或README.md在项目根),改名后无法作为主页渲染 - Docker 容器里用
nginx:alpine镜像时,若挂载的文件叫app.html,但没改nginx.conf,照样 403 - 某些 CDN(如 Cloudflare Pages)会强制重写路由到
index.html,此时改名反而导致所有路径都打不开 - 相对路径引用(如
<img src="logo.png">)在index.html和home.html中行为一致,但用户书签、SEO、分享链接会完全不同
真要换名,本质是在改约定;而大部分工具链和协作场景都建立在 index.html 这个默认值上。动它之前,先确认上下游是否真的能接住。


















