我发现以下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上它们不起作用。为什么呢?
答案 0 :(得分:5)
第一行启用两种mime类型的包含也称为SSI(server-side includes):application/javascript
和application/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上运行的原因。