Apache ProxyPassRewrite no reescribe los cuerpos de respuesta recibidos de http://test.example.com , solo encabezados (como redireccionamientos a una página 404 y tal).
Una serie de alternativas:
Uno ) Reescribe la aplicación interna para usar rutas relativas en lugar de absolutas. es decir, en ../css/style.css
lugar de/css/style.css
Dos ) /folder
Vuelva a implementar la aplicación interna en el mismo subdirectorio en lugar de en la raíz de test.example.com.
Tres ) Es poco probable que sucedan uno y dos ... Si tiene suerte, la aplicación interna solo usa dos o tres subdirectorios y esos no se usan en su sitio principal , simplemente escriba un montón de líneas 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/
Cuatro ) Cree un subdominio separado para la aplicación interna y simplemente invierta todo el 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 ) A veces los desarrolladores son totalmente desorientado y tener sus aplicaciones no sólo generan absoluta URL pero incluso incluyen la parte de host en su URL y las miradas resultantes de código HTML como este: <img src=http://test.example.com/icons/logo.png>
.
A ) Puede usar la solución combinada de un DNS de horizonte dividido y el escenario 4. Los usuarios internos y externos usan test.example.com, pero su DNS interno apunta directamente a la dirección IP del servidor test.example.com. Para usuarios externos, el registro público de test.example.com apunta a la dirección IP de su servidor web público www.example.com y luego puede usar la solución 4.
B ) En realidad, puede obtener apache no solo para las solicitudes de proxy para test.example.com, sino también para reescribir el cuerpo de la respuesta antes de que se transmita a sus usuarios. (Normalmente, un proxy solo reescribe encabezados / respuestas HTTP). mod_substitute en apache 2.2. No he probado si se apila bien con mod_proxy, pero tal vez lo siguiente 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>