浏览器首先看他们收到的内容的MIME类型,这原则上是独立于文件的扩展名。 MIME类型由Web服务器作为HTTP标头的一部分发送(如果您愿意,请将其作为HTTP标头的一部分)。
CSS样式表的正确MIME类型是text/css
。如果样式表文件具有text/css MIME类型(在HTTP标头中定义),则浏览器将使用它们来应用样式,而不管扩展名是什么。
如果MIME类型错误,结果是未定义的:它取决于浏览器和HTML版本&严格性,如果样式被渲染或不。您可以使用浏览器的调试器来检查MIME类型。
有关Chrome中的示例,请参阅this screenshot。

每个段落在相应的文件color: red
规则,但不应用之一。正如你所看到的,虽然它的MIME类型不正确,但text/plain文件中的样式确实被渲染。浏览器确实发出警告。由PHP生成的文本/ html文件中的样式未呈现(并给出了警告)。
但是,PHP和其他脚本引擎允许操作MIME类型,但是,正如我在test.css.fixed .php文件(下面的代码)。正如你所看到的,浏览器不再抱怨并且不管其扩展名如何应用这些样式。
在PHP中,MIME类型可以设置如下(这是test.css.fixed。php):
<?php
header("Content-Type: text/css");
?>
p.test_css_fixed_php {
color: red;
}
header
函数更改服务器发送的HTTP标头。
如果您不使用脚本引擎,则可以将Web服务器配置为正确设置MIME类型(请参阅,例如Apache mod_mime configuration)。
请注意,HTML版本和严格性也会对此产生影响。在Chrome中,当HTML类型不严格时,text/html文件中的样式似乎无论如何都会呈现。但你不能指望,所以这是一个很快的&肮脏的修复程序。
是否有一些限制,你不能给你的CSS文件适当的扩展?这似乎是一个更简单的解决方案... – Krease
我从来没有见过这样做;为什么要从CSS文件中删除'.css'扩展名(真的好奇)? – Jules
只要服务器将它作为CSS文件发送,您应该可以,但是我不知道您是否可以设置服务器来发送文件作为特定类型,如果它们尚未具有某种类型的扩展名地图也是。我看到的更大的问题是,别人将来如何在没有扩展的情况下更新您的代码库?这听起来很麻烦。 –