.htaccess组合文件

时间:2012-04-03 07:44:28

标签: .htaccess

我发现以下htacess允许从特定的js文件中连接

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

e.g。在script.combined.js里面你可以有

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

并且它们将被包含在此单个文件中。

我想知道.htaccess的这两行2 n 3如何组合文件。

这些也适用于多个系统,但在我的ubuntu 12.04和Apache 2.2.22上它们不起作用。为什么呢?

2 个答案:

答案 0 :(得分:5)

第一行启用两种mime类型的包含也称为SSI(server-side includes):application/javascriptapplication/json

第二行SetOutputFilter INCLUDES在输出文件之前处理包含的文件,但仅针对正则表达式路径"\.combined\.js$"中包含的文件,并且基本上执行第一行所做的操作,但它是备份。

您错过了一个重要的Option标志。那个Options +Includes启用包括开始。这可能就是为什么它不能在其他服务器上工作

我希望你不要在<之后包括那个空格,这是一个错字,因为如果我没有弄错的话,肯定不会对任何版本的apache起作用。它应该没有空格如下:

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

您还需要在Apache httpd.conf中启用mod_include模块。 http://httpd.apache.org/docs/2.2/mod/mod_include.html

LoadModule include_module modules/mod_include.so

我很确定你从HTML5-Boilerplate .htaccess

获得了这段代码

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

答案 1 :(得分:0)

实际解释如下:

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

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

有关如何使用这两个功能的说明,请参见上述链接。基本上,apache在将结果发送到客户端以供浏览器处理之前应用过滤器。因此,结果看起来是将文件附加到一个文件中。

Apache实际上已经弃用了AddOutputFilterByType,并且不再支持它在apache 2.1之后的使用:(我认为这就是这些功能无法在2.2.22上运行的原因。