Я делаю это с помощью замечательного модуля mod_macro .
Допустим, у вас есть /etc/apache2/envvars
(для дистрибутива, подобного Debian, это место для хранения переменных окружения apache):
#export KOHANA_ENV=PROD
export KOHANA_ENV=DEV
Где вы [un] комментируете в зависимости от производства или разработки.
С другой стороны у вас есть VirtualHost или только его часть, определенная с помощью макроса.Макрос - это способ написать общую часть конфигурации с некоторыми переменными.Я использую его для полных виртуальных хостов, но вот пример с частью VirtualHost.Мы будем использовать переменную environmentnement, чтобы решить, какой макрос использовать (ключевое слово Use ):
<Virtualhost *:80>
ServerName foobar.com
#(...)
Use EnvStuff_${KOHANA_ENV} /tmp
#(...)
Здесь макрос принимает аргумент (путь к каталогу tmp), который не является обязательным.
Тогда вам нужно только определить 2 разных макроса, где переменная окружения является частью имени макроса EnvStuff_PROD & EnvStuff_DEV :
<Macro EnvStuff_PROD $tmp>
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
</IfModule>
<IfModule mod_headers.c>
Header set MyHeader "Hello this is PRODUCTION envirronment. It took %D microseconds for Apache to serve this request."
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
#(...)
</IfModule>
php_admin_value upload_tmp_dir $tmp/upload
#(... other php settings for production)
</Macro>
<Macro EnvStuff_DEV $tmp>
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
Header set MyHeader "Hello this is DEVELOPMENT envirronment. It took %D microseconds for Apache to serve this request."
</IfModule>
php_admin_value upload_tmp_dir $tmp/upload
</Macro>
В этихНапример, вы можете проверить заголовки в ответах и легко увидеть, работает ли он для вас.
Будьте осторожны, если переменная окружения настроена неправильно, у вас возникнут некоторые проблемы, возможно, вы сможете создать макрос EnvStuff_ , а также: -)