我的问题是关于apache2上的RewriteMap
:我想应用重写条件,以便我的代理上的所有请求都代理到一个全新的域。
例如localhost/test
或任何其他网址应该转到www.mydomain.com
:
RewriteRule / http://www.mydomain.com [P]
工作正常。如果我访问localhost,我仍然会在浏览器地址行中看到“localhost”,但会显示mydomain.com。但是,如果我现在点击这个mydomain网站上的任何链接,我将收到“未找到”回复。
mydomain的sourecode包含例如此链接:
<a href="/lab/sale.php">Link</a>
如果我以正常方式访问网站,则会产生:www.mydomain.com/lab/sale.php
,并且工作正常。
如果我通过我的代理访问网站并且发生了rewriteRule,我会在链接点击后转到:localhost/lab/sale.php
,当然不存在。
问题:如何通过我的代理访问网站的用户浏览整个网站,就像他真的会访问这个网站一样?
答案 0 :(得分:1)
RewriteRule
指令与ProxyPass
或Redirect
不同,它们实际上将2个节点链接在一起,其后面的所有内容也会被代理。您仅代理请求URI /
,而不是/lab/
或/etc.php
或其他任何内容的规则。您需要创建匹配并将其作为反向引用传递:
RewriteRule ^/?(.*)$ http://www.mydomain.com/$1 [P]
或者您可以使用%{REQUEST_URI}变量:
RewriteRule ^ http://www.mydomain.com%{REQUEST_URI} [P]