【发布时间】:2011-09-06 11:59:52
【问题描述】:
我在本地机器上设置了一个虚拟应用程序,它正在运行,但它没有加载 CSS 文件。我正在使用lessCSS 为我的应用程序设置样式,我认为这里不加载css 的原因是LESSCSS 样式表使用了.less 扩展名。
那么如何才能读取 *.less 文件扩展名?
【问题讨论】:
我在本地机器上设置了一个虚拟应用程序,它正在运行,但它没有加载 CSS 文件。我正在使用lessCSS 为我的应用程序设置样式,我认为这里不加载css 的原因是LESSCSS 样式表使用了.less 扩展名。
那么如何才能读取 *.less 文件扩展名?
【问题讨论】:
无需添加处理程序。只需为.less 添加一个 MIME 类型(现在称为 Internet 媒体类型)并将 MIME 类型设置为 text/css。
Web 服务器可以看到请求的扩展名(就像文件的扩展名一样)。如果他们知道扩展名,他们就提供文件,并添加一个 HTTP Header Field 来指示文件的内容是哪种格式。例如,当它们提供静态 HTML 文件时,它们会添加 Content-Type: text/html 标头字段。这样,浏览器就可以了解使用哪个应用程序来处理响应正文。
如果网络服务器不知道请求扩展名,它们会搜索以查看是否已经安装了另一个知道该扩展名的应用程序。如果有另一个应用程序,则他们让该应用程序提供文件。
你可以想这个例子来充分理解发生了什么:
你去一家餐馆,(你是HTTP request)。你要一个披萨(披萨是扩展名)。厨师知道如何提供比萨饼,因此它为您服务。
现在假设您再次去同一家餐厅,并要求Bomyhoor(假食品)。厨师不知道如何烹饪和服务。他/她请其他厨师看看厨房里是否已经有其他人(厨房是网络服务器)知道如何烹饪?如果有人会做饭Boomyhoor,那么他/她会为您服务。
现在,考虑下一次,这次请求Graboori。 Chef 已经知道(从字典中)Graboori 只是 Pizza 的另一个名称。因为他知道如何提供比萨饼,所以他只是提供。
当您将 MIME 类型添加到 Web 服务器时,您只需将请求扩展名映射到文件类型。
【讨论】:
你必须添加
<staticContent>
<mimeMap fileExtension=".less" mimeType="text/css" />
</staticContent >
到您的 Web.config
样本:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".less" mimeType="text/css" />
</staticContent >
<rewrite>
<rules>
<rule name="WordPress: http://YourSite.com" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<authentication mode="None" />
</system.web>
</configuration>
【讨论】: