【问题标题】:Redirect requests to different domains bases on request url in apache根据apache中的请求url将请求重定向到不同的域
【发布时间】:2016-05-29 16:59:02
【问题描述】:

我必须根据原始 apache 服务器上收到的请求将请求重定向到 2 个不同的服务器(服务器 A 和服务器 B)。

Server-A 也是另一个 apache 服务器,Server-B 是 weblogic 服务器。我正在使用 weblogic 代理插件指令来重定向对 Server-B 的请求。因此,只有上下文为 /console 或 /mywlsapp 的请求才应重定向到 weblogic 服务器。所有其他请求都应重定向到 Server-A。

我尝试使用 ReWrite Cond 排除 WLS 上下文。但它没有用。

这是我的重写规则。你能帮我解决这个问题吗?

RewriteCond %{REQUEST_URI} !^/console/
RewriteCond %{REQUEST_URI} !^/mywlsapp/
RewriteCond %{HTTP_HOST} ^mycustomapp\.mycompany\.com:7090 [OR]
RewriteCond %{HTTP_HOST} ^http://mycustomapp\.mycompany\.com:7090
RewriteRule ^(.*) http://Server-A.mycompany.com/$1 [P]

<Location /console>
WLSRequest On
SetHandler weblogic-handler
WebLogicHost Server-B
WebLogicPort 7110
</Location>

<Location /mywlsapp>
SetHandler weblogic-handler
WebLogicHost Server-B
WebLogicPort 7112
</Location>

【问题讨论】:

  • “我尝试使用 ReWrite Cond 排除 WLS 上下文。但没有成功。” - 这意味着example.com/console 也被重定向到服务器A?

标签: apache .htaccess mod-rewrite


【解决方案1】:

我想你可能想要的是这个

RewriteCond %{REQUEST_URI} !^/console/
RewriteCond %{REQUEST_URI} !^/mywlsapp/
RewriteCond %{HTTP_HOST} ^mycustomapp\.mycompany\.com$
RewriteCond %{SERVER_PORT} ^7090$
RewriteRule ^(.*)$ http://Server-A.mycompany.com/$1 [R=301,L]

这应该是 301 重定向

http://mycustomapp.mycompany.com:7090/foo

http://Server-A.mycompany.com/foo

但是,必须满足上述所有条件才能进行此重定向,使用清晰的英语:

  1. URI 不能以/console//mywlsapp/ 开头AND
  2. 主机必须是 mycustomapp.mycompany.com AND
  3. 端口必须正好是7090

请注意,例如http://mycustomapp.mycompany.com:7090/console 不会被重定向,但http://mycustomapp.mycompany.com:7090/console/ 会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多