来自 Andy 的有趣问题
严肃的问题。 为什么我们使用 .html 而不是 .htm? / @adactio @css
— Andy Clarke (@Malarkey) 2019 年 12 月 12 日
该线程中最可能的答案是:DOS 长期以来一直是 PC 的一个大型操作系统,它对文件扩展名有 3 个字符的限制。
有趣的是,第一本关于 HTML 的书专门介绍了这一点
来自 HTML 样式手册 (1994)…… 第一本关于 HTML 的书 📚🙂 pic.twitter.com/PtUTdr7I2k
— Phil (@phildcpickering) 2019 年 12 月 12 日
我的想法是 **服务器软件**。 我知道 Web 服务器会对不同的文件类型执行不同的操作。 在我自己的服务器上进行测试(设置为提供 WordPress 网站),我在根目录中放置了一些包含完全相同内容的文件:<h1>Cool</h1>
- **file.text** = 文件在浏览器中呈现为纯文本(Content-Type: text/plain)
- **file.html** = 文件在浏览器中呈现为 HTML(Content-Type: text/html)
- **file.htm** = 文件在浏览器中呈现为 HTML(Content-Type: text/html)
- **file.fart** = 文件由浏览器下载(Content-Type: application/octet-stream)
您可以编写代码来使用任何您想要的内容类型提供文件,但是如果没有这样,文件扩展名很重要,因为它们会影响默认 Web 服务器选择提供文件类型标头的方式。
关于为什么我们使用 4 个字母文件扩展名的答案不能是
“我们过去使用的是具有 3 个字母文件扩展名的操作系统”
虽然没有明确说明,但在我看来,答案是通过解释为什么存在 .html 的替代方法来间接说明为什么我们使用 .html。
当我第一次在 90 年代开始学习 html 时,传统观点认为 .htm 文件被 Windows 服务器理解,而 .html 被用于 *nix。 微软后来引入了 .asp,然后是 .aspx,等等,正如他们所说,历史就是这样。
HTML 和 HTM 是相同的文件格式。 正如文章中所写,它应该是 HTML,但我们过去在 DOS 上写 HTM 是因为该操作系统的 3 个字符限制。
这没有回答标题中的问题(?)
没关系,我没有阅读推文的截图
如果您在 Web 服务器中添加 .fart 作为 text/html,它也会运行。
我总是很好奇这个问题。 感谢您找到答案!
除非,就像您所说,您使用的是 DOS,否则它们一直是可互换的。 Web 服务器可以配置为将任何扩展名处理为任何 MINE 类型。 您列出的那些只是默认值。 如果您愿意,您可以轻松地将 HTML 作为二进制文件提供。
我的意思是 MIME 类型 :)
您知道 ACTUAL Microsoft Office 以 .htm 作为遗留代码保存签名吗? 我在 10 多年前就意识到了,从那时起它就一直保持着这种状态
您可以为您的网站使用任何您想要的扩展名,只要您为该扩展名配置了 mime 类型。 如果您想要 .fart,您可以做到。
早期的 Web 服务器几乎完全运行在 Unix 文件系统上,并且很少考虑仅支持 3 个字符扩展名的 PC/DOS 文件系统。
在大多数实际用途中,甚至文件名也限制为 8 个字符。 当时 Windows 有一些长文件名支持,但大多数 FTP 客户端不支持此功能,并且在来回传输文件时使用 8 个字符的 DOS 文件名别名。 这很混乱,试图在两个系统之间工作是一场噩梦。
互联网先于 Dos 和 Mac 系统。 互联网服务器都是某种 Unix 系统的变体,其中带点的扩展名实际上只是文件名的一部分,就 Unix 文件系统而言,但某些应用程序和服务(即系统应用程序)被设计为期望名称中存在某些带点的后缀(即扩展名)。 网页的标准是 .html,但早期 Windows 系统由于 3 个字符的扩展名限制而无法参与这个新世界,直到 .htm 被允许作为替代方案。 Mac 有一个不同的问题,因为它们不需要名称中的扩展名后缀,用户可以轻松地重命名整个文件名。 因此,Mac 用户在互联网上创建文件时必须确保明确输入名称的扩展名部分。 最后,名称很重要,每个字符的确切大小写也很重要,因为指向互联网上文件名的超链接对大小写敏感,并且对名称敏感,因此 .html、.htm 和 .HTM 如果位于 Unix(或 Linux)服务器上(即使它现在位于 Windows 服务器上,它对大小写不敏感,但它可能有一天会被移植到 Unix 服务器上,链接将断开)。 Web 浏览器和 Web 服务器本身“可以”被设计为尝试文件名的不同替代方案,以使其看起来像拥有正确的文件名,但我不知道它们是否这样做 - 也许基于 Windows 的 Web 服务器会尝试这样做,但这只会导致在将来将您的网站移植到基于 Unix 的服务器时出现命名不一致的草率做法,从而导致命名不一致,最终会像纸牌屋一样倒塌。
是的,可以。 它解释了 .htm 的起源,它最初是针对特定操作系统的折衷方案。 扩展名最初是 .html,以反映缩写词 HTML。
如果 DOS 允许文件扩展名超过 3 个字符,那么 .htm 替代扩展名甚至不会存在。 它的存在是人们询问为什么我们使用 .html 而不是 .htm 的主要原因。 如果这不是原因,那么您可以同样地问,为什么不使用“x”而不是 .html? .html 似乎最具描述性。 .htm 和其他替代方案可能更短或具有其他特性,但需要做出选择,.html 似乎最适合和自然。
我们很少使用 .htm,而是使用 .html,因为互联网主要运行在允许 4 个字母文件扩展名的服务器上,而 html 代表超文本标记语言。 .htm 存在的唯一原因是早期的 DOS 和 Windows 系统无法处理完整的 .html 文件扩展名。 因此,它被缩写为 .htm。 因此,答案是 .html 是最初的方式,也是首选方式,而 .htm 是一种变体。
早在 90 年代,当 Commodore 仍在经营销售那款“领先时代的电脑”传奇 Amiga 时,它内置了数据类型支持,消除了为常见类型文件提供扩展名的需求 - 操作系统只知道文件是什么类型,并在 Workbench(类似于 Finder)中创建一个预览。
我认为即使在 2020 年,Mac 和 Windows 也依赖于文件名扩展名 - 有一个明确的答案会很有趣。
https://en.wikipedia.org/wiki/AmigaOS
区别在于文件类型是作为文件名的一部分指定还是作为文件系统中的独立字段存储。 这基本上是两种不同的方式来做同一件事。 将其作为文件名的一部分可能更容易使用,因为您可以通过更改文件名(例如,将 txt 更改为 html)来更改文件类型。