Estou configurando ambientes de teste locais para minha equipe. Cada um de nós tem nosso próprio subdomínio que aponta para nossas máquinas em nossa rede interna. No código, os URLs são todos gravados com o subdomínio www
. Eu preciso substituir esses subdomínios com o da caixa que a configuração vive usando apenas uma configuração que todos nós compartilhamos.
Atualmente, estou executando o Apache 2.4 em todas as máquinas dev e usando mod_substitute
e mod_headers
dentro de blocos condicionais para conseguir isso. Aqui está uma amostra de um dos hosts virtuais usando esta configuração:
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerAlias nathans-dev.example.com robertr-dev.example.com justinb-dev.example.com
ServerName www.example.com
ErrorLog "logs/example-errors.log"
SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE
AddOutputFilterByType SUBSTITUTE text/html
AddOutputFilterByType SUBSTITUTE text/xml
AddOutputFilterByType SUBSTITUTE text/css
AddOutputFilterByType SUBSTITUTE application/xml
AddOutputFilterByType SUBSTITUTE application/json
AddOutputFilterByType SUBSTITUTE application/javascript
<If "%{HTTP_HOST} == 'nathans-dev.example.com'">
Substitute "s|//www\.example\.com|//nathans-dev.example.com|iq"
Header always edit Location "//www.example.com" "//nathans-dev.example.com"
Header edit Location "//www.example.com" "//nathans-dev.example.com"
Header edit Set-Cookie "domain=(?:www\.)?example\.com" "domain=nathans-dev.example.com"
</If>
<ElseIf "%{HTTP_HOST} == 'robertr-dev.example.com'">
Substitute "s|//www\.example\.com|//robertr-dev.example.com|iq"
Header always edit Location "//www.example.com" "//robertr-dev.example.com"
Header edit Location "//www.example.com" "//robertr-dev.example.com"
Header edit Set-Cookie "domain=(?:www\.)?example\.com" "domain=robertr-dev.example.com"
</ElseIf>
# ... SNIP ...
</VirtualHost>
O problema é que estamos executando o Apache 2.2 em produção. Este é o último item que me impede de espelhar o ambiente de produção. A diretiva condicional If
não existe no 2.2 e eu tentei muitas coisas para tentar fazê-la funcionar usando 2.2, mas sem sorte.
Eu tentei usar um host virtual para cada membro da equipe, usando Directory
blocos apontando para links simbólicos para cada membro com o destino apontado no diretório principal da web (por exemplo, /var/www/nathans -> /var/www/html
with <Directory "/var/www/nathans/>Substitutions...</Dirctory>
)
Existe alguma maneira de ter substituições condicionais com base no host virtual ou no nome do host?