Substitua todas as URLs baseadas no nome do host usando o Apache 2.2

1

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?

    
por nathanjosiah 14.01.2015 / 18:12

0 respostas