代理重写到新域?

时间:2012-08-14 18:22:41

标签: mod-rewrite apache2

我的问题是关于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,当然不存在。

问题:如何通过我的代理访问网站的用户浏览整个网站,就像他真的会访问这个网站一样?

1 个答案:

答案 0 :(得分:1)

RewriteRule指令与ProxyPassRedirect不同,它们实际上将2个节点链接在一起,其后面的所有内容也会被代理。您代理请求URI /,而不是/lab//etc.php或其他任何内容的规则。您需要创建匹配并将其作为反向引用传递:

RewriteRule ^/?(.*)$ http://www.mydomain.com/$1 [P]

或者您可以使用%{REQUEST_URI}变量:

RewriteRule ^ http://www.mydomain.com%{REQUEST_URI} [P]