【问题标题】:IIS URL Rewrite main entry site redirect to blue / green entryIIS URL Rewrite 主入口站点重定向到蓝/绿入口
【发布时间】:2018-12-28 19:45:12
【问题描述】:

首先,我不擅长写正则表达式,所以对此我深表歉意。

我正在尝试设置 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>

测试表达式我得到正确的 2 字母状态缩写,只要 [state]/ 之后没有任何内容。所以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 站点。

我可以使用一些帮助来构建规则以及它们需要如何排序。

【问题讨论】:

    标签: regex iis url-rewriting


    【解决方案1】:

    下面的正则表达式将从字符串 [a-z]{2}$ 的末尾返回 2 个字符,如果之后可以有 /,那么它将是这样的 [a-z]{2}/?$

    对于正则表达式,它应该适用于重写规则,但我不确定重写如何与替换一起工作,所以希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2018-11-01
      • 2020-03-18
      • 2023-01-20
      • 1970-01-01
      • 2018-07-25
      • 2019-09-24
      • 2014-08-20
      • 2016-12-03
      相关资源
      最近更新 更多