我在 apache2.conf 中使用以下配置
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 6 month"
ExpiresByType image/jpg "access plus 6 month"
ExpiresByType image/jpeg "access plus 6 month"
ExpiresByType text/javascript "access plus 6 month"
ExpiresByType text/css "access plus 6 month"
ExpiresDefault "access plus 6 month"
</IfModule>
它适用于 css 和 js
curl -I example.com/assests/css/global.css
Expires: Wed, 14 Jan 2015 09:28:17 GMT
但是当我卷曲任何图像文件时
curl -I example.com/assets/images/banner-16-water-purifier.jpg
Expires: Sun, 17 Aug 2014 09:29:10 GMT
正如您所见,jped 不起作用。所有图像 (jpeg/png/gif) 也同样如此
答案1
您的配置看起来正确,在 Apache 2.2.22 上的测试也正常。检查是否有任何 mod_expires 指令(ExpiresByType 或 ExpiresDefault)覆盖了 apache.conf。
从图片路径中的任何 .htaccess 文件开始,包括根 Web 文件夹、/assets/ 和 /assets/images/。除非您已在这些文件夹中禁用 .htaccess,否则 .htaccess 中的指令将覆盖其他任何地方设置的配置。
接下来检查 /apache2/sites-available/ 下的虚拟主机文件,然后检查 apache2.conf 包含的任何其他配置文件,例如 /apache2/httpd.conf、/apache2/mods-available/expires.conf(如果存在)以及 /apache2/conf.d/ 下的任何文件。
我在将 mod_expire 指令添加到虚拟主机配置时遇到了类似的问题。我想知道为什么当我将其设置为其他值时,它仍然显示 30 天的有效期,但后来注意到网站上的缓存软件已将 ExpiresByType 和 ExpiresDefault 添加到 .htaccess 文件中。