基本的 Apache 重写

基本的 Apache 重写

假设我有 exampleA.com 和 exampleB.com。如果我想在 Apache Web 服务器上执行从 websiteA.com 到 websiteB.com 的重写,例如当我在浏览器中输入 exampleA.com 时,它将保留 URL 并显示加载的内容,就像我导航到 exampleB.com 一样,我该如何直接添加虚拟主机来实现这一点?

我的研究表明:

RewriteRule /some/url(.*) http://exampleB.com/some/url$1 [P,L]

但我不熟悉“/some/url”部分的相关性,因为我不希望只重写特定的 URI,而是重写整个域。

类似地,如果我导航到 exampleA.com/test.htm,它应该呈现 exampleB.com/test 上的内容,并且浏览器始终显示“exampleA.com/test”。

答案1

要使该规则适用于整个域,您需要......

RewriteRule /(.*) http://exampleB.com/$1 [P,L]

这基本上与以下内容相同:

ProxyPass / http://exampleB.com/

请记住,有很多东西可以将用户的浏览器指向exampleB域。 ProxyPassReverse将处理30x重定向:

ProxyPassReverse / http://exampleB.com/

但是内容中的任何其他内容都可能指向exampleB.com,包括 HTML 内容(mod_proxy_html可能有帮助)、javascript、CSS 等。

答案2

你不能。

如果您想保留原始 URL,您实际上需要通过 examplea 代理(查找 ProxyPass)exampleb 或使用某种框架诡计。

相关内容