【发布时间】:2018-06-12 20:32:02
【问题描述】:
我们有一个包含多个单独网站的服务器:
domain.com/masterSite
domain.com/site1
domain.com/site2
domain.com/siteN
我们正在将多个单独的网站迁移到一个多租户应用程序 (/mastersite)。我们不是一下子做这一切的;相反,我们一次迁移单个站点(200 多个)。而当一个站点迁移到多租户站点时,我们需要一个转发规则。
例子:
domain.com/site1 --> domain.com/masterSite/site1
domain.com/siteN --> domain.com/masterSite/siteN
站点名称都是随机的,因此我们将使用重写地图。
问题是我在使用重写映射时无法确定模式匹配,因此无论额外的 URL 数据如何,对路径的所有请求都会被转发。
这是当前状态:
<rewrite>
<rewriteMaps>
<rewriteMap name="ForwardToMTDB" defaultValue="">
<add key="/site1" value="/masterSite/site1" />
<add key="/site2" value="/masterSite/site2" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Rewrite Rule" enabled="true" stopProcessing="true">
<match url="(.+)" />
<conditions>
<add input="{ForwardToMTDB:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" logRewrittenUrl="true" redirectType="Found" />
</rule>
</rules>
</rewrite>
应全部发送至 domain.com/masterSite/siteN 的请求示例
domain.com/SiteN
domain.com/siteN/
domain.com/siteN/foo/bar
domain.com/siteN/somePage.aspx
domain.com/siteN/blah1/blah2/blah3/blah4/etc
【问题讨论】: