IIS URL重写主条目站点重定向到蓝色/绿色条目

时间:2018-12-27 17:59:55

标签: regex iis url-rewriting

首先,我不太擅长写正则表达式,为此我深表歉意。

我正在尝试将IIS设置为将URL从一个主条目重写为第二个蓝色/绿色条目站点。作为多租户设置的一部分,用户将通过美国州缩写来重定向。目前,我们只会在域名后寻找2个字母。所有流量都将进入主入口站点https://dev.app.com,并重定向到欣赏状态的URL

例如:  http://dev.app.com/cahttp://dev.app.com/ny

默认情况下,进入网站http://dev.app.com根目录的用户将自动重定向到http://dev.app.com/ca。 CA是我们的默认状态。

每个州都有自己的蓝色/绿色入口站点。例如:http://ca.app.entry。蓝色/绿色条目站点具有反向代理重写规则,可将流量重定向到当前正在运行的任何站点。部署期间会更新蓝色/绿色重写规则。

此外,每个州都有自己的API。例如:http://ca.api.com。主条目URL如下所示:https://dev.app.com/ca/ext,它将流量转发到正确状态的API。

我一直在尝试设置重写规则以捕获状态缩写,并寻找ext(如果存在)并转发到相应的AI站点。

对于默认URL,我首先创建了一个重写规则之前的重定向规则

 <httpRedirect enabled="true">
      <add wildcard="/" destination="/ca" />
 </httpRedirect>

我要捕获状态缩写的下一条规则:

<rule name="StateRewrite" stopProcessing="true">
   <match url="/([a-z]{2})/$" />
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
   <action type="Rewrite" url="http://{R:1}.app.entry" logRewrittenUrl="true" />
</rule>

测试表达式,只要[state] /后没有任何内容,我就可以得到正确的2字母状态缩写。因此http://dev.app.com/ca/someOtherqueryString不会产生匹配。转到http://dev.app.com/ca/似乎没有将流量转发到[state] .app.entry / [state]。如果我直接进入该州的入境站点,它将起作用。因此,转到ca.app.entry / ca路由到正确的蓝色/绿色站点。查看日志似乎并没有构造整个URL。我只在日志中看到/[state]/2018-12-27 16:57:25 127.0.0.1 GET /ca/

对于API网站,我尝试了类似(.*)/ext/(.*)的模式规则。该规则位于状态缩写规则之后,但仍未路由到正确的状态API站点。

我可以使用一些帮助来构建规则以及如何订购它们。

1 个答案:

答案 0 :(得分:1)

以下正则表达式将从字符串[a-z]{2}$的末尾返回2个字符,如果后面可以有一个/,则类似于[a-z]{2}/?$

这是用于正则表达式的,它应该可以重写规则,但是我不确定重写如何正确地执行重写,因此希望对您有所帮助