Назад | Перейти на главную страницу

Другой заголовок Expires для определенного URL

У всего приложения есть глобальный заголовок expires, установленный в .htaccess, у меня есть URL-адрес, например. / current, который мне нужен как другой заголовок срока действия.

Другим решением может быть использование Apache mod_setenvif и mod_headers для условной установки заголовков кеша.

SetEnvIf Request_URI "^/current$" OVERRIDE_CACHE_HEADERS=TRUE
Header set Cache-Control no-cache env=OVERRIDE_CACHE_HEADERS

Я не пробовал эту конкретную конфигурацию, но у меня есть аналогичная, которая устанавливает переменную среды с помощью директивы RewriteRule, а затем использует Header для условного изменения директив Cache-Control

Использование может использовать <Location> Директива apache для определения различных параметров (например, истечения срока действия) для определенного URL-адреса.

Я предполагаю, что:

  1. Вы хотите, чтобы у всего содержимого в каком-либо каталоге был другой срок действия, чем у остальной части сайта, а не только для нескольких файлов. Например: динамически генерируемые файлы JS; часто меняющиеся файлы логотипов и других изображений; или часто редактируемый CSS, для которого требуется очень короткое время жизни кеша ..
  2. Apache напрямую обслуживает этот контент - это не папка просмотра или что-то еще для фреймворка, из которого PHP включает.
  3. У вас включен модуль mod_expires

Файлы .htaccess ищутся в каждом каталоге на пути к обслуживаемому файлу, если они включены, начиная с корневого каталога документации. Поэтому проще всего будет поместить новый файл .htaccess в каталог, для которого вы хотите изменить срок действия. Если ваш сайт www.foo.com и вы хотите, чтобы у / current был другой заголовок expire, используйте простой файл .htaccess на www.foo.com/current. Файлу просто необходимы:

# enable expirations with mod_expires
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 2 weeks"
</IfModule>

При этом ... блок в вашем файле (ах) httpd.conf для всего сервера, блок виртуального хоста или в docroot .htaccess были бы более элегантными и управляемыми решениями.

Полезный пример, который должен хорошо сочетаться с переписыванием:
http://mark.koli.ch/2010/12/set-cache-control-and-expires-headers-on-a-redirect-with-mod-rewrite.html