在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。
答案 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"
结尾)。