静态网页的扩展名
你随便建一个文本文件,静态把内容写成“hello world”,网页然后保存时把后缀名改成.html,展名双击打开,静态浏览器就会把它渲染成一个网页。网页就这么简单——静态网页的展名扩展名,本质上是静态浏览器和操作系统之间的一个约定信号。 但事情远不止“能打开”这么简单。网页.html、展名.htm、静态.xhtml,网页甚至没有扩展名的展名文件,它们之间的静态差别,有时候会让人抓狂。网页 先说说那个最古老的展名纠结:.htm和.html。这俩货功能上完全一样,纯粹是历史遗留问题。早期Windows 95系统只认三位扩展名,所以就有了.htm。现在你随便用哪个都行,服务器也不会因此给你脸色看。但你要是较真,去翻W3C的规范文档,人家官方推荐的是.html,因为那是标准全称。 真正有意思的是.xhtml。这玩意儿当年被寄予厚望,号称要取代html,结果现在基本成了个“伪需求”。我见过不少新手把文件存成.xhtml,然后发现页面里的脚本全失效了——因为XHTML要求严格的XML语法,一个标签没闭合,整个页面直接白屏。这就像你开车时要求每个动作都完美标准,稍微压个线就熄火,谁受得了? 再往下挖,你会发现扩展名其实是个“表面现象”。服务器返回给浏览器的HTTP头里有个Content-Type字段,那才是真正的“幕后老板”。举个例子:你把一个文件命名为page.html,但服务器配置错误,把Content-Type设成了text/plain,浏览器就会把整个HTML源码当纯文本显示出来。你看到满屏的尖括号标签,那一刻的崩溃感,我太熟悉了。 反过来,有些文件根本没有扩展名,照样能当网页跑。比如你写个URL,路径是/blog/post,服务器通过内部路由规则直接把这个请求映射到某个模板文件,输出HTML内容。用户地址栏里看不到任何.html后缀,但页面照样渲染得漂漂亮亮。这种“伪静态”玩法,现在各大博客平台都在用,纯粹是为了好看和SEO方便。 说到个人观察,我发现不少初学者有个坏习惯:把所有网页都存成.html,然后直接双击打开。这样测试倒没问题,可一旦涉及到表单提交、AJAX请求,就会撞上file://协议的限制。这时候你就得用本地服务器环境,把文件路径变成http://localhost/xxx.html,否则浏览器会直接给你报跨域错误。扩展名没变,但环境变了,行为就天差地别。 还有个小细节,Windows资源管理器的“隐藏已知文件类型的扩展名”选项,简直是给网页开发者挖的坑。你辛辛苦苦把文件命名为index.html,结果系统只显示“index”,你同事看到后以为是纯文本,双击用记事本打开了——那种混乱场面,经历过的人都懂。 所以,静态网页的扩展名不是个死板的标签。它更像是一个“入门提示”,告诉你这文件大概是什么类型,但真正决定它如何被解析的,是服务器配置、HTTP协议和浏览器行为这三者的协作。你把这层逻辑想通了,就不会再被后缀名牵着鼻子走。哪怕某天遇到一个叫.abc的文件,只要服务器把它当text/html返回,浏览器照样能给你渲染出一个完整的页面来。
-
上一篇
-
下一篇