没有功能区别,只有历史和系统兼容性差异;早期dos/win3.x受限于8.3文件名格式(扩展名最多3字符),故用.htm替代.html,现代服务器和浏览器均支持两者,优先级取决于服务器配置。

没有功能区别,只有历史和系统兼容性差异。现代服务器和浏览器对两者一视同仁,选哪个纯看团队习惯或遗留配置。
为什么会有 index.htm 这个扩展名
早期 DOS 和 Windows 3.x 系统只支持「8.3 文件名格式」——即主文件名最多 8 字符、扩展名最多 3 字符。html 是 4 字符,不被识别;htm 刚好卡在限制内,于是成了变通方案。
- DOS/Win32 下:
index.htm能被识别,index.html可能被忽略或报错 - UNIX/Linux/macOS 下:
index.html是事实标准,index.htm有时需额外配置才能被识别(比如 Nginx 默认不把htm加入index指令) - 现代 Windows 和主流 Web 服务器(Apache、Nginx、Caddy)默认都同时支持两者,但顺序可能影响实际加载结果
index.html 和 index.htm 同时存在时,谁会被优先加载
取决于服务器配置,不是浏览器行为。常见情况如下:
- Apache 默认
DirectoryIndex是index.html index.htm index.php,遇到index.html就停,不会继续找index.htm - Nginx 默认
index指令是index.html index.htm,顺序同样决定优先级 - 如果你改过配置(比如把
index.htm放前面),那它就会先被用 - 注意大小写:
Index.html≠index.html(Linux 文件系统区分大小写)
PHP 动态首页要不要叫 index.htm
不要。这是最容易踩的坑之一。
-
index.htm是静态文件后缀,服务器默认不执行 PHP 解析器,里面写的<?php echo 'hello'; ?>会原样输出成 HTML 文本,甚至暴露源码 - 哪怕你用
AddType application/x-httpd-php .htm强行关联,也容易被 CDN、缓存层或安全扫描工具误判为静态资源而跳过处理 - 动态逻辑统一用
index.php,静态页面统一用index.html,边界清晰,运维和协作成本更低
真正需要纠结的不是扩展名本身,而是服务器是否按你预期的顺序查找、是否对大小写敏感、以及动态内容有没有被当成静态资源直接吐出——这些比 .htm 还是 .html 更容易导致线上问题。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











