Я использую эту конфигурацию ниже в своем 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)
Ваша конфигурация выглядит правильной и тестируется на Apache 2.2.22. Проверьте, есть ли у вас какие-либо директивы mod_expires (ExpiresByType или ExpiresDefault) в другом месте, которые переопределяют apache.conf.
Начните с любых файлов .htaccess в пути к изображениям, включая корневую веб-папку, / 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.