如何使用真实姓名将url重定向到httpd.conf中的另一个站点

Posted

技术标签:

【中文标题】如何使用真实姓名将url重定向到httpd.conf中的另一个站点【英文标题】:How to redirect url to another site in httpd.conf with the real name 【发布时间】:2012-10-10 20:03:59 【问题描述】:

我的配置很简单:2 个 Apache 服务器

服务器 1:带有域 (test.com) 的“IP1” 服务器 2:没有域的“IP2”

在我的服务器 1 的文件 httpd.conf 中,我想访问:

到安装在服务器 1 上的 tomcat,其 url 为:test.com 到具有虚拟主机的服务器 2 的 apache,其 url 为:test.com/server2

Httpd.conf / 服务器 1

RewriteRule ^/server2$ http://'IP2'/web/test.php/  [L]
ProxyPass / ajp://'IP1':PORT/ retry=5

它可以工作,但第二个 URL 不显示 test.com/server2,而是显示 http://'IP2'/web/test.php/。 如何解决?

【问题讨论】:

【参考方案1】:

http://'IP2' 作为重写规则目标的一部分会自动 302 重定向浏览器。但由于它在不同的机器上,并且您不希望浏览器中的 URL 地址栏发生变化,因此您需要使用 mod_proxy 而不是 mod_rewrite。

RewriteRule 行改为ProxyPass,以便它反向代理请求而不是重定向:

ProxyPassMatch ^/server2$ http://'IP2'/web/test.php/

【讨论】:

+1。或者,您也可以将P 标志添加到您的RewriteRule 以使其代理请求。但是,the mod_rewrite documentation 表示效率低下,并建议按照上述答案中的建议使用ProxyPassMatch 它不适用于以下语法:ProxyPassMatch ^/server2$ http://'IP2'/web/test.php/ 我有 503 错误...在文件 '/var/ log/httpd/error.log'(server1),我有这个日志:[错误](111)连接被拒绝:代理:HTTP:尝试连接到(IP2:80)失败 是的,它适用于 url http://'IP2'/web/test.php,它也适用于重写规则语法,除了我希望显示的 url 是 test.com/server2而不是 http://'IP2'/web/test.php @user1761263 所以你不需要test.php 之后的斜杠(你在你的例子中)? 好的,它可以工作;是我的“IP2”错了;我用内部IP(私有IP)代替,它可以工作。谢谢

以上是关于如何使用真实姓名将url重定向到httpd.conf中的另一个站点的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 .htaccess 将所有 url 重定向到 1 个 url

如何使用漂亮的 url 将 HTTP 重定向到 HTTPS?

如何使用 htaccess 将带有参数的旧 url 重定向到新的 seo url

django注册后如何将用户重定向到特定的url?

如何在访问主页时将用户重定向到特定 URL?

什么是伪静态,url 重写是截取传入web 请求并自动将请求重定向到其他 url