将规则 www.example.com 重写为 example.com/www,而无需更改浏览器中的 URL

将规则 www.example.com 重写为 example.com/www,而无需更改浏览器中的 URL

我想重写 URL www.example.com 下的站点 example2.com/www,但我不希望将浏览器中的 URL 更改为 example2.com/www/。

因此在浏览器中输入http://www.example.com我将看到以下网站http://example2.com/www但在浏览器中它仍然是http://www.example.com

我尝试过类似的事情:

 RewriteRule (.*) http://example.com/www [L]

我将其放在 www.example.com 的虚拟主机配置中,它可以工作,但需要改变 url。

有没有不同的方法可以以这种方式重写 http 和 https?

编辑...我正在使用 LiteSpeedBalancer,而 www.example.com 是虚拟主机,仅显示 example.com/www(因此 www.example.com 下没有比赛,该域名仅重写为 example.com/www)

这很复杂,首先我以 www.example.com 为例,将其重写为 example2.com/www,以指出它们是不同的虚拟主机。

答案1

一种解决方法是在控制面板中使用帧转发。

答案2

使用 mod_proxy 可以实现您所描述的内容,但正如其他人所评论的那样,您需要问自己“为什么?”。在 example2.com 上进行虚拟托管会简单得多

无论如何,你需要mod_proxy mod_proxy_http并且可能mod_proxy_html已加载模块

然后在你的 Apache 配置中输入类似下面的内容

# turn the general proxy off
ProxyRequests Off

# pass requests for / to the backend /www
ProxyPass / http://example2.com/www

# fix and redirect headers from the back end
ProxyPassReverse / http://example2.com/www

# fix any domains in cookies from the backend to the frontend.
ProxyPassReverseCookieDomain example2.com example.com

# fix any cookie paths form /www to the front end /
ProxyPassReverseCookiePath / /www

然后,如果后端站点上的 html 仍然设法恢复 /www,那么您可以打开蠕虫罐,加载 mod_proxy_html 并尝试:

ProxyHTMLEnable On
ProxyHTMLURLMap /www /

使用 mod_proxy_html 还可以做很多事情配置指南

相关内容