Ist es möglich, Inhalte auf jeder Seite zu ersetzen, die über einen Proxy geleitet wird, ähnlich wie mod_rewrite für URLs verwendet wird? Die Dokumentation zum Ersatz ist nicht klar.
Ich habe einige Seiten, die ich als Reverse-Proxy verwende und die absolute Pfade haben. Dies bricht die Website. Sie müssen ersetzt werden und Tools wie mod_rewrite nehmen sie nicht auf, da es sich nicht um URL-Anforderungen handelt.
<VirtualHost *:80>
ServerName servername1
ServerAlias servername2
ErrorLog "/var/log/proxy/jpuat_prox_error_log"
CustomLog "/var/log/proxy/jpuat_prox_access_log" common
RewriteEngine on
LogLevel alert rewrite:trace2
RewriteCond %{HTTP_HOST} /uat.site.co.jp$ [NC]
RewriteRule ^(.*)$ http://jp.uat.site2uk.co.uk/$1 [P]
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|uat.site.co.jp|jp.uat.site2uk.co.uk|i"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://uat.site.co.jp/
ProxyPassReverse / http://uat.site.co.jp/
</VirtualHost>
Keiner der oben genannten Punkte funktioniert beim Ersetzen der HTML-Zeichenfolge
<link href="/server///uat.site.co.jp/css/css.css
mit
<link href="/server///uat.site2uk.co.uk/css/css.css
Conf nach Änderungen:
<VirtualHost *:80>
ServerName jp.uat.site2uk.co.uk
ServerAlias uat.site.co.jp
ErrorLog "/var/log/proxy/jpuat_prox_error_log"
CustomLog "/var/log/proxy/jpuat_prox_access_log" common
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://uat.site.co.jp/
ProxyPassReverse / http://uat.site.co.jp/
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|uat.site.co.jp|jp.uat.site2uk.co.uk|ni"
</VirtualHost>
linkTags bereitstellen können . Wenn Sie können, kann ich nicht sagen, dass es eine gute Idee wäre. Auf jeden Fall ist das nicht Ihre Frage. Gemäß den Apache- Dokumenten ist die substituteDirektive nur innerhalb von DirectoryBlöcken oder .htaccessDateien gültig . Versuchen Sie, einen <location>Block zu erstellen (auch wenn er für / ist), und fügen Sie die Direktive dort ein.
aTag. Wenn Sie auf diesen Link klicken, folgt wahrscheinlich nicht der Webbrowser dem Link, sondern ein Dateibrowser (Windows Explorer), der versucht, den UNC zu öffnen. Versuchen Sie, diese Zeichenfolge in HTML-Text zu ersetzen?