静态网页的主页一般命名为 index.htm 还是 index.html 别纠结了,听我一句劝
说实话,每次看到新人问这个问题,我都想笑。真的,这问题问得挺“学院派”的。
我干了快十年前端了,从当年还在用Dreamweaver拖控件,到现在搞各种自动化构建,这种基础问题其实没几个人真去深究过。但既然你问了,我就跟你掏心窝子说点实在的。别去背那些死板的规范,服务器认的是啥,你就叫啥。
很多人第一反应肯定是 index.html。对,现在绝大多数情况都是这个。为什么?因为HTML是超文本标记语言嘛,这是标准。你随便找个静态博客,或者那种简单的落地页,打开源码,主页大概率就是 index.html。
但是,等等。
你要是去翻翻那些老掉牙的服务器配置,或者一些比较“古早”的企业官网,你会发现很多叫 index.htm 的。甚至有的服务器,两个都支持,有的只支持其中一个。
这里头有个坑。
很多新手建站,本地开发好好的,一上传到服务器,404了。为啥?因为服务器没配置默认文档,或者配置的时候只写了 index.htm,而你上传的是 index.html。这时候服务器懵了,它不知道读哪个,直接给你个错误页面。
所以,静态网页的主页一般命名为 index.html 是目前的主流,特别是现在大家都用Nginx或者Apache做反向代理,默认配置里通常都带着 index index.html index.htm; 这样的指令。你看,html排在前面,说明现代服务器更偏爱这个。
但我见过一个真实案例。有个客户,是个传统制造业老板,非要坚持用 .htm 后缀。他说他以前做网站的时候,.htm 加载快,.html 加载慢。其实这是误区,文件后缀名对加载速度影响微乎其微,除非你的服务器因为后缀名做了特殊的缓存策略,否则根本感觉不到区别。
那到底该选哪个?
我的建议是:看你用的什么服务器,看你团队的习惯。
如果你用的是GitHub Pages,或者Vercel这种现代静态托管平台,它们对 index.html 的支持是完美的,甚至不需要你特意去改什么配置。这时候,你就老老实实叫 index.html。
如果你是在搞那种老式的Linux服务器,而且上面跑着很多旧项目,为了兼容性,有时候叫 index.htm 反而省事,因为老系统可能默认只认这个。
还有个事儿,很多人不知道,其实你可以同时放两个文件。index.html 和 index.htm 都放在根目录。然后服务器配置里,把 index.html 的优先级设高。这样既兼容了那些死板的老浏览器(虽然这种浏览器现在基本绝迹了),又符合现代标准。但这属于过度优化,没必要,除非你特别强迫症。
再扯远点,其实现在做静态网页,谁还手动去建 index.html 啊?都是脚手架工具生成的。Vue CLI、Create React App,甚至一些简单的静态站点生成器如Hugo、Hexo,它们默认输出的主页文件名都是固定的。你根本不用操心这个问题,工具都帮你弄好了。
除非……你自己从零手写HTML。
如果你是自己手写,那我建议你直接用 index.html。理由很简单:
1. 语义更清晰,一看就知道是HTML文档。
2. 搜索引擎对 .html 的收录习惯更好,虽然影响不大,但心理安慰也好。
3. 现在大多数云服务和CDN,对 .html 的支持都是开箱即用的。
别被那些“htm更短”、“htm更古老”的说法忽悠了。技术是向前发展的,不是向后兼容的。
总结一下,静态网页的主页一般命名为 index.html。这是目前的事实标准。除非你有特殊的服务器限制,或者你在维护一个十年前的老项目,否则,别折腾,就用 index.html。
最后给点实在建议:
如果你正在纠结这个问题,说明你可能对服务器配置不太熟。别光纠结文件名,去查查你的服务器Nginx或者Apache的配置文件,看看 default_type 和 index 指令是怎么写的。这才是解决问题的根本。
要是你实在搞不定服务器配置,或者想做个更高效的静态站点,欢迎来找我聊聊。我这边有些现成的配置模板,直接复制粘贴就能用,比你自己瞎琢磨强多了。毕竟,时间就是金钱,别把时间浪费在这种细枝末节上,除非你真的享受这个过程。