2011-09-06 63 views
39

我已經在本地機器上建立了一個虛擬應用程序,它正在運行,但它沒有加載CSS文件。我使用lessCSS來設計我的應用程序,我認爲這裏不加載css的原因在於LESSCSS樣式表使用.less擴展名。如何將* .less添加到IIS 7.0?

那麼爲了讀取* .less文件擴展名該怎麼辦?

回答

73

沒有必要添加處理程序。只需爲.less添加一個MIME類型(現在稱爲Internet媒體類型),並將MIME類型設置爲text/css

Web服務器查看請求的擴展(就像擴展文件一樣)。如果他們知道擴展名,他們提供該文件,並添加一個HTTP頭字段來指示該文件的內容採用哪種格式。例如,當它們提供靜態HTML文件時,它們會添加Content-Type: text/html標題字段。這樣,瀏覽器就可以理解使用哪個應用程序來處理響應主體。

如果Web服務器不知道請求擴展名,它們將搜索以查看是否已經安裝了另一個知道該擴展名的應用程序。如果有另一個應用程序,那麼他們讓該應用程序提供該文件。

你可以認爲這個例子充分了解發生了什麼:

你去餐廳吃飯,(你是HTTP request)。你問一個比薩(披薩是延伸)。廚師知道如何爲比薩服務,因此它爲您服務。

現在考慮你再去同一家餐館,並要求Bomyhoor(假食品)。廚師不知道如何烹飪和服務。他/她要求其他廚師看看廚房裏是否有其他人(廚房是網絡服務器),誰知道如何烹飪?如果有人知道ho要烹飪Boomyhoor,那麼他/她會爲您服務。

現在,考慮你再去一次,這次要求Graboori。廚師已經知道(從字典)Graboori只是比薩的另一個名字。因爲他知道如何服務披薩,他只是服務於此。

將MIME類型添加到Web服務器時,只需將請求擴展名映射到文件類型即可。

+6

我認爲OP在詢問如何使用自定義HTTP處理程序來完成服務器端的轉換。但是,如果使用less.js客戶端方法,您的答案是正確的。 – Domenic

+1

這對每個用戶來說都是非常重要的。 OP正在尋找一個自動編譯器,所以當你完成編輯.less(並保存它)時,它將它編譯成一個CSS文件並將其放在正確的位置。 Eclipse有一個用於開發的插件,我知道你可以在linux上使用更少的命令來設置apache,但是對於IIS來說,你需要使用本地編譯器,或者爲其提供服務。 – Relic

+6

請注意,您的網絡服務器可能會返回HTTP錯誤代碼406 - 如果您將MIME類型定義爲文本/ css,則不可接受。你應該使用text/less作爲mimetype。 –

0

必須添加

<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>