web-dev-qa-db-fra.com

ProxyHTML pour réécrire l'URL

J'ai installé 2 serveurs Apache. Un sur le port 80 et un autre sur le port 8077. Je veux tout voir sur le serveur sur 8077 via un proxy inverse. En ce moment, j'ai:

ProxyPreserveHost Off
ProxyHTMLInterp On
ProxyPass /translate/ http://www.example.com:8077/
ProxyPassReverse /translate/ http://www.example.com:8077/
ProxyHTMLURLMap / /translate/

Cela me permet d'accéder à la page initiale du site, mais les liens vers les images, css et autres pages ne fonctionnent pas.

Par exemple, le CSS dans le HTML montre comme

/css/style.css

où je veux vraiment que ce soit

/translate/css/style.css

Pour qu'il récupère le fichier sur le serveur 8077. Que puis-je faire avec le paramètre actuel pour que cela fonctionne?

22
Andrew

Ok, c'est ce que j'ai fini par faire pour que ça marche

ProxyPass /translate/ http://www.example.com:8077/
ProxyPassReverse /translate/ http://www.example.com:8077/

ProxyHTMLURLMap http://www.example.com:8087 /translate/

<Location /translate/>
   ProxyPassReverse /
   SetOutputFilter  proxy-html
   ProxyHTMLURLMap http://www.example.com:8077 /translate/
   ProxyHTMLURLMap / /translate/
   ProxyHTMLURLMap  /translate/ /translate/
   RequestHeader    unset  Accept-Encoding
</Location>

Cela semble bien fonctionner. Le ProxyHTMLURLMap http://www.example.com:8077 /translate/line n'était nécessaire que pour traduire des URL basées sur "referrer" qui ont conduit certaines pages à essayer de servir directement à partir du port 8077 serveur.

35
Andrew