Apache: ExpiresDefault не работает, тогда как «Header» работает. Как идет? - PullRequest
3 голосов
/ 11 января 2012

Если я сделаю это:

<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>

Это работает,Это подразумевает 2 вещи:

  • mod_expire установлен (IfModule mod_expires.c true)
  • заголовок Expire не изменен после применения этого правила.

Чего мне не хватает?

Кстати: если у вас есть какое-то решение, чтобы заставить его работать, я ваш мужчина!

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Хорошо, я получил это из официальной документации здесь :

Обратите внимание, что если вы используете настройку на основе даты изменения, заголовок Expires не будет добавлен к содержимомуэто не приходит из файла на диске.Это связано с тем, что для такого контента нет времени модификации.

Так что он работает только для статических файлов, а не для всех остальных: они не статичны.

0 голосов
/ 11 января 2012

Этот тоже меня озадачил, потому что AFAIK, он должен работать, поэтому я попробовал его на тестовой ВМ, меняя 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.

...