如果我这样做:
<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4|css|js|php)$">
ExpiresActive On
ExpiresDefault "access plus 30 days"
</FilesMatch>
</IfModule>
它没有正确设置Expire标头,而如果我像这样“强制”它:
<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4|css|js|php)$">
ExpiresActive On
Header set Expires "Thu, 18 Jan 2012 20:00:00 GMT"
</FilesMatch>
</IfModule>
有效。这意味着两件事:
IfModule mod_expires.c
为真)我错过了什么?
顺便说一下:如果你有任何解决方案让它成功,我就是你的男人!
答案 0 :(得分:4)
好的,我从官方文档here获得了它:
请注意,如果您使用基于修改日期的设置,则过期 标题不会添加到不来自文件的内容中 磁盘。这是因为没有修改时间 这样的内容。
因此它仅适用于静态文件,而不适用于所有其他文件:它们不是静态文件。
答案 1 :(得分:0)
这个让我感到难过,因为AFAIK,它应该工作,所以我尝试了一个测试VM,改变N天和刷新。对我来说很好。我的Apache版本是
Server version: Apache/2.2.14 (Ubuntu)
Server built: Nov 18 2010 21:17:19
测试文件的任何标题(使用chrome开发人员工具)(N = 15)显示:
Date:Mon, 09 Jan 2012 01:48:43 GMT
ETag:"7574-5-4b60e88a820a1"
Expires:Tue, 24 Jan 2012 01:48:43 GMT
我的想法是,任何ExpiresDefault
都可以被Header set Expires
覆盖。您是否已对.htaccess
层次结构进行了操作,以确保您的ExpiresDefault
未在较低级别被覆盖。
如果您不希望htaccess文件执行此操作,则需要在http配置中禁用它们。