O Apache ProxyPassRewrite não reescreve os corpos de resposta recebidos do link , somente cabeçalhos (como redirecionamentos para uma página 404 e outros).
Várias alternativas:
Um ) Reescreva o aplicativo interno para usar caminhos relativos em vez de absolutos. ou seja, ../css/style.css
em vez de /css/style.css
Dois ) Reimplante o aplicativo interno em um mesmo subdiretório /folder
em vez de na raiz de test.example.com.
Três ) É improvável que um e dois ocorram ... Se você tiver sorte, o aplicativo interno usa apenas dois ou três subdiretórios e os que não são usados no seu principal site , basta escrever um monte de linhas ProxyPass:
# Expose Internal App to the internet.
ProxyPass /externalpath/ http://test.example.com/
ProxyPassReverse /externalpath/ http://test.example.com/
# Internal app uses a bunch of absolute paths.
ProxyPass /css/ http://test.example.com/css/
ProxyPassReverse /css/ http://test.example.com/css/
ProxyPass /icons/ http://test.example.com/icons/
ProxyPassReverse /icons/ http://test.example.com/icons/
Quatro ) Crie um subdomínio separado para o aplicativo interno e simplesmente inverta tudo de proxy:
<VirtualHost *:80>
ServerName app.example.com/
# Expose Internal App to the internet.
ProxyPass / http://test.internal.example.com/
ProxyPassReverse / http://test.internal.example.com/
</VirtualHost>
Cinco ) Às vezes, os desenvolvedores são completamente ignorantes e têm seus aplicativos não apenas gerando URLs absolutos, mas incluindo a parte do nome do host em seus URLs e o código HTML resultante se parece com isso : <img src=http://test.example.com/icons/logo.png>
.
A ) Você pode usar a solução combinada de um DNS e um cenário de split horizon. Ambos os usuários internos e externos usam o test.example.com, mas seu DNS interno aponta diretamente para o endereço IP do servidor do test.example.com. Para usuários externos, o registro público de test.example.com aponta para o endereço IP do seu servidor público www.example.com e você pode usar a solução 4.
B ) Você pode obter o apache não apenas para fazer proxy de solicitações para test.example.com, mas também reescrever o corpo da resposta antes que ele seja transmitido para o seu Comercial. (Normalmente, um proxy apenas reescreve cabeçalhos / respostas HTTP). mod_substitute no apache 2.2. Eu não testei se ele combina bem com o mod_proxy, mas talvez o seguinte funcione:
<Location /folder/>
ProxyPass http://test.example.com/
ProxyPassReverse http://test.example.com/
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|test.example.com/|www.example.com/folder/|i"
</Location>