假设我有 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 或使用某种框架诡计。