2012-04-03 59 views
4

我發現下面的htacess,使級聯從具體的js文件的.htaccess合併文件

<FilesMatch "\.combined\.js$"> 
    Options +Includes 
    AddOutputFilterByType INCLUDES application/javascript application/json 
    SetOutputFilter INCLUDES 
</FilesMatch> 

例如內在script.combined.js裏面你可以有

< !--#include file="libs/jquery-1.5.0.min.js" --> 
< !--#include file="plugins/jquery.idletimer.js" --> 

它們會被包含到這個文件中。

我想知道.htaccess這兩行第2行和第3行如何組合文件。

此外,這些已在幾個系統上工作,但在我的Ubuntu的12.04與Apache 2.2.22他們不工作。爲什麼?

+4

我不認爲這是使用的.htaccess這個是一個好主意。您將以**任何腳本語言獲得更可維護和可靠的結果。 – 2012-10-11 18:04:44

回答

5

第一行啓用包括也被稱爲SSI(server-side includes)兩個MIME類型:application/javascriptapplication/json

第二行SetOutputFilter INCLUDES流程,outputing他們,但只包含在正則表達式路徑"\.combined\.js$"和基本的文件之前,包括文件做什麼首先是做什麼,但它的備份。

您錯過了至關重要的Option標誌。這是Options +Includes啓用包括開始。這可能就是爲什麼它沒有其他的服務器

上工作,我希望你不包括<後的空間,這是一個錯字,因爲肯定不會在Apache的任何版本的工作,如果我沒有記錯。它應該是不帶空格如下:

<!--#include file="libs/jquery-1.5.0.min.js" --> 
<!--#include file="plugins/jquery.idletimer.js" --> 

您還需要啓用mod_include模塊在Apache的httpd.conf。 http://httpd.apache.org/docs/2.2/mod/mod_include.html

LoadModule include_module modules/mod_include.so

我敢肯定,你得到這個代碼的HTML5的樣板的.htaccess

https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess#L887-L917

+0

是的,我從鍋爐 – aWebDeveloper 2012-10-15 06:56:06

+0

得到它,我有選項+包括。我更新了我的問題 – aWebDeveloper 2012-10-15 07:08:48

+0

@WebDeveloper我已經更新了我的答案 – 2012-10-15 16:16:38

0

實際的解釋是在這裏:如何使用這兩個功能

http://httpd.apache.org/docs/2.2/mod/core.html#addoutputfilterbytype

http://httpd.apache.org/docs/2.2/mod/core.html#setoutputfilter

指令是在上面的鏈接。基本上,apache在將結果發送給客戶端以便由瀏覽器處理之前應用過濾器。因此,結果看起來是將文件附加到一個文件中。

阿帕奇實際上不提倡使用的AddOutputFilterByType並不再支持它的阿帕奇2.1後使用:(我認爲這是爲那些功能無法在2.2.22工作的原因。