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

Условное объявление в Apache httpd

Мы хотим иметь возможность устанавливать заголовки Cache-Control на основе User-Agent в Apache.

Например, если User-Agent содержит подстроку foo мы хотим установить Cache-Control на 10 минут. Но если не установить его на 1 день.

Обыскивая вокруг, я нашел BrowserMatch, но это, похоже, только устанавливает переменные среды:

BrowserMatch foo short-live  # Sets environment variable short-live

Но я хотел бы условно применить такую ​​директиву, как Header set ... или ExpiresDefault ...

Есть ли способ условно применять объявления? Что-то вроде:

<FilesMatch "\.(jpg|jpeg|gif|png|js|css)$">
  Header set Cache-control "max-age=86400"
  <IfBrowser "foo">
    Header set Cache-control "max-age=600"
  </IfBrowser>
</FilesMatch>

Заметка, IfBrowser вымышленный. Есть ли какая-нибудь настоящая директива, которую можно было бы использовать таким образом? Спасибо!

PS Это перепост с https://stackoverflow.com/questions/5708090/contional-declaration-in-apache-httpd так как это малоактивно.

ОБНОВЛЕНО - да, предыдущий код не годился. Однако это может направить вас в правильном направлении:

Header set Cache-control "max-age=86400"

SetEnvIfNoCase User-Agent libwww short-cache
Header set Cache-control "max-age=600" env=short-cache

Я действительно это проверил, похоже, работает.