1

我的问题是关于RewriteMapapache2:我想应用重写条件,以便我的代理上的所有请求都代理到一个全新的域。

例如localhost/test或任何其他 url 应该只是去www.mydomain.com

RewriteRule / http://www.mydomain.com [P]

工作正常。如果我访问 localhost,我仍然会在浏览器地址行中看到“localhost”,但会显示 mydomain.com。但是,如果我现在单击此 mydomain 站点上的任何链接,我将收到“未找到”响应。

mydomain 的源代码包含例如此链接:

<a href="/lab/sale.php">Link</a>

如果我以正常方式访问该站点,这将导致:www.mydomain.com/lab/sale.php,并且工作正常。

如果我通过我的代理访问该站点并且发生了 rewriteRule,我会在链接点击后被定向到:localhost/lab/sale.php,这当然不存在。

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

4

1 回答 1

1

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

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

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

RewriteRule ^ http://www.mydomain.com%{REQUEST_URI} [P]
于 2012-08-14T23:52:33.723 回答