如何使用真实姓名将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/server2Httpd.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?