是否有可能替换通过代理传递的每个页面上的内容,类似于将mod_rewrite用于URL的方式?替代品的文档不明确。
我有一些页面是反向代理的,具有绝对路径。这破坏了站点。它们需要替换,并且像mod_rewrite这样的工具由于不是URL请求,因此无法对其进行处理。
<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>
以上两种方法都不能替换HTML字符串
<link href="/server///uat.site.co.jp/css/css.css
与
<link href="/server///uat.site2uk.co.uk/css/css.css
更改后的Conf:
<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>
他们的网站正常工作。但是,一旦将其放在防火墙后面,我们当然会在一堆CSS和图像上得到404。通常来说,每件事都会得到200
—
ZZ9
它们来自IIS服务器上的链接标记<link href =“ // fqdn / asset”
—
ZZ9 2015年
我认为您不能在
—
GregL 2015年
link
标记中提供UNC路径。如果可以的话,我不能说这是个好主意。无论如何,这不是您的问题。根据Apache 文档,该substitute
指令仅在Directory
块或.htaccess
文件内部有效。尝试创建一个<location>
块(即使它是用于/),然后将指令放入其中。
@GregL,这种URL格式是“相对于协议”的URL,虽然不是众所周知,它是链接到页面的完全有效的方法。“ //domain.com/path”使浏览器以与用于请求包含链接的页面相同的协议来请求文档。
—
Tero Kilkanen 2015年
a
标记。单击该链接可能不会导致该链接后面的Web浏览器,而是一个文件浏览器(Windows资源管理器)试图打开UNC。您是否要替换HTML文本中的字符串?