Parece que você quer usar uma variável condicional dentro do Apache. Eu faço isso usando um script shell para definir condicionalmente uma variável no ambiente shell, que é então herdada pelo Apache ao reiniciar.
Você pode definir variáveis de ambiente shell em /etc/apache2/envvars
no Ubuntu, /usr/local/etc/apache22/envvars.d/
no FreeBSD. No CentOS / RHEL, acho que o arquivo correto é /etc/sysconfig/httpd
, mas não tenho certeza.
O script de inicialização do HTTPD fornecerá os arquivos quando for chamado. Essas variáveis se tornam parte do ambiente de shell do Apache e podem ser referenciadas na configuração do Apache. Sua lógica condicional pode ser tão poderosa quanto a sua necessidade aqui.
Por exemplo, tenho algo parecido com /usr/local/etc/apache22/envvars.d/hostname.env
:
HOSTNAME='hostname -s'
if [ "$HOSTNAME" == "foo" ]; then
export INCLUDE_CONFFILE = $HOSTNAME.conf
else
export INCLUDE_CONFFILE = default.conf
done
E então eu uso essa variável de ambiente no meu httpd.conf principal:
# We have some host-specific settings for some hosts.
# INCLUDE_CONFFILE is inherited from envvars.d/hostname.env
Include etc/apache22/Includes/${INCLUDE_CONFFILE}
Essas variáveis também devem ser legíveis em arquivos .htaccess.
Observe que as variáveis de ambiente do sistema operacional são completamente diferentes das variáveis de ambiente do Apache. não confunda os dois. O manual do Apache HTTP Server diz : "Embora essas variáveis sejam referidas como variáveis de ambiente, elas não são mesmo que as variáveis de ambiente controladas pelo sistema operacional subjacente. "