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

Использование mod_expires условно в зависимости от переменной окружения

Я одолжил немного mod_expires код из HTML5 Boilerplate, который добавляет некоторые разумные значения по умолчанию для истечения срока действия активов (у меня есть версия файла revving, настроенная с помощью htaccess, поэтому я могу добавлять mtimes перед расширениями активов, такими как script.123456789.js):

ExpiresActive on
ExpiresDefault                                      "access plus 1 month"

# CSS
ExpiresByType text/css                              "access plus 1 year"

# Data interchange
ExpiresByType application/json                      "access plus 0 seconds"
ExpiresByType application/xml                       "access plus 0 seconds"
ExpiresByType text/xml                              "access plus 0 seconds"

# ... etc ...

Однако я бы хотел отключить их на своем сервере разработки (который устанавливает DEVELOPMENT=1 переменная среды). Можно ли условно отключить mod_expires (возможно ExpiresActive On) в 2.4.4, как вы можете с mod_access если установлена ​​переменная среды (Allow from env=DEVELOPMENT)?

Я не знаю простого способа сделать это на основе значения переменной окружения. Вы могли бы найти способ с помощью mod_rewrite, но это было бы некрасиво.

Более простой способ - установить на сервере разработки переключатель командной строки, -DDEVELOPMENTдля Apache вместо (или в дополнение к) переменной среды. Тогда конфигурация Apache становится тривиальной:

<IfDefine !DEVELOPMENT>
ExpiresActive on
...
</IfDefine>

Правильное место для установки переключателя зависит от вашего дистрибутива. В Debian & family вы устанавливаете

export APACHE_ARGUMENTS=-DDEVELOPMENT

в / etc / apache2 / envvars. В RHEL вы устанавливаете

OPTIONS=-DDEVELOPMENT

в / etc / sysconfig / httpd.