根据请求启用mod_expire

时间:2011-09-01 09:15:59

标签: apache .htaccess mod-rewrite http-caching mod-expires

我正在计算版本号或哈希值并链接到file.js,而不是生成file--bbe02f946d.js的链接。我正在使用以下重定向规则来提供当前版本的文件:

RewriteRule ^(.*)--[a-z0-9]+\.js$ $1.js

现在,我想为这些请求设置极远的Expires标头:

ExpiresActive on
ExpiresByType application/javascript "access plus 1 year"

这很好用,但也适用于尚未版本化的资源(/file.js请求)。如何仅为匹配RewriteRule的请求设置expires头?通常情况下,我会使用<LocationMatch>,但这不可用,因为应用程序必须能够在我可以修改htaccess的任意服务器上运行。

1 个答案:

答案 0 :(得分:0)

您可以使用htaccess添加新的mime类型并设置自定义过期标头。

使用.xjs的示例

<IfModule mod_mime.c>
    AddType application/x-javascript .xjs
</IfModule>

<IfModule mod_gzip.c>
mod_gzip_item_include file \.xjs$
</IfModule>

<FilesMatch ".(xjs)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>

或只使用FilesMatch中的正则表达式来匹配您的js文件

<FilesMatch "--[a-z0-9]+\.js$">
Header set Cache-Control "max-age=43200"
</FilesMatch>