标头过期无效

时间:2012-05-30 12:58:51

标签: header apache2

httpd.conf中,最后一行是:

ExpiresActive On
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    ExpiresDefault "access plus 3 days"
</FilesMatch>

当我运行YSlow时,它表示我的所有CSS文件(和其他文件)都没有设置过期时间。 CSS文件位于子目录中,但我相信"\."应匹配所有文件,无论子目录如何。

Apache已设置为虚拟主机,但上述指令位于httpd.conf最底部的vhosts部分之外。

LoadModule expires_module modules/mod_expires.so文件中有.conf指令。

该网站位于运行AWS Linux和Apache2的AWS上。我在检查它是否有效之前重新启动了apache。

1 个答案:

答案 0 :(得分:7)

在回答你的问题时,这在我的httpd.conf中适用于我:

LoadModule expires_module /usr/lib/apache2/modules/mod_expires.so
ExpiresActive On

<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
ExpiresDefault "access plus 3 days"
</filesMatch>

以下是一些尝试:

1)确保mod_expires.so在您认为的位置。您可以在终端中使用此功能查看包含的模块:apache2 -M

2)确保您的指令适用于您感兴趣的文件(即不会被更远的.htaccess文件覆盖)

3)确保{http:1}}指令在httpd.conf文件中

4)在你的LoadModule正则表达式中,你应该用反斜杠转义点,否则你匹配任何字符。这不是一个大问题,但您最终会将规则应用于非静态网页,例如FilesMatch(请注意"site.com/politico"结尾)。