使用mod_rewrite的Apache和FilesMatch

时间:2011-01-03 00:26:21

标签: apache .htaccess mod-rewrite

在我的.htaccess文件中,我有:

<FilesMatch "\.(js|css|png|gif|jpg)$">
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=31536000"
Header set Expires "A31536000"
</IfModule>
</FilesMatch>

我还重写了/forum-js/forum.js - &gt; /wp-content/plugins/forum/js/forum.js.php,这是唯一应与上述正则表达式匹配的文件。出于某种原因,与该正则表达式匹配的所有其他资源都包含包含Cache-ControlExpires的标头,但此标题不包含{{1}}和{{1}}。是因为它是一个重写的网址吗?

2 个答案:

答案 0 :(得分:3)

  

是因为它是重写的网址吗?

是的,根据您的评论,其实际扩展名为.php,与该扩展程序相关的规则生效。

最简单的方法是从PHP脚本中发送标题:

<? header("Cache-Control: public, max-age=31536000");
   header("Expires : pA31536000");

答案 1 :(得分:2)

您也可以使用mod_expires代替:

<IfModule mod_expires.c>
    <FilesMatch "\.(js|css|png|gif|jpg)$">
        ExpiresDefault A31536000
    </FilesMatch>
</IfModule>

它也适用于MIME媒体类型而不是文件扩展名:

<IfModule mod_expires.c>
    ExpiresByType application/javascript A31536000
    ExpiresByType text/css A31536000
    ExpiresByType image/png A31536000
    ExpiresByType image/gif A31536000
    ExpiresByType image/jpeg A31536000
</IfModule>