URL重写多个AND条件重定向



我正在寻找一个URL重写规则,以将任何请求重定向到www.XYZ.com,intel。从下面要重定向到的IP子网列表中选择XYZ.com、prep.XYZ.com和prod.XYZ.comhttps://test.XYZ.com.

111.001.111.0/24

111.112.222.0/22

111.222.333.0/24

我把规则写如下:

<rule name="RedirectToXYZTest" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^www.XYZ.com$|^inte.XYZ.com$|^prep.xyz.com$|^prod.xyz.com$" />
<add input="{REMOTE_ADDR}" pattern="^111.000.111.d{1,3}$" />
<add input="{REMOTE_ADDR}" pattern="^111.111.222.d{1,3}$" />
<add input="{REMOTE_ADDR}" pattern="^111.222.333.d{1,3}$" />
</conditions>
<action type="Redirect" url="https://test.xyz.com/" />
</rule>

上面的问题是,由于matchany逻辑条件,该条件甚至适用于任何一个条件。我需要Http_Host&amp;执行重定向动作的Ip地址之一。

ie如果url是www.xyz.com,给定正则表达式中的任何Ip地址范围(如111.001.111.3(都应满足重定向的标准。

找不到入站规则的任何前提条件。

我想到的第一个想法是使用MatchAll:定义三种不同的规则

<rules>
<rule name="RedirectToXYZTest1" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www.XYZ.com$|^inte.XYZ.com$|^prep.xyz.com$|^prod.xyz.com$" />
<add input="{REMOTE_ADDR}" pattern="^111.000.111.d{1,3}$" />
</conditions>
<action type="Redirect" url="https://test.xyz.com/" />
</rule>
<rule name="RedirectToXYZTest2" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www.XYZ.com$|^inte.XYZ.com$|^prep.xyz.com$|^prod.xyz.com$" />
<add input="{REMOTE_ADDR}" pattern="^111.111.222.d{1,3}$" />
</conditions>
<action type="Redirect" url="https://test.xyz.com/" />
</rule>
<rule name="RedirectToXYZTest3" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www.XYZ.com$|^inte.XYZ.com$|^prep.xyz.com$|^prod.xyz.com$" />
<add input="{REMOTE_ADDR}" pattern="^111.222.333.d{1,3}$" />
</conditions>
<action type="Redirect" url="https://test.xyz.com/" />
</rule>
</rules>

下面是我使用的合并regex模式。默认的logicalGrouping是MatchAll,它将验证http_Host&amp;远程加法器注:REMOTE_ADDR将仅在本地工作&因此,在本地测试规则是很好的。一旦部署,它将不包含访问者的真实IP。该规则需要用于HTTP_True_Client_IP,而不是用于生产的Remote_ADDR。

<rule name="RedirectToXYZTest" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.XYZ.com$|^inte.XYZ.com$|^prep.xyz.com$|^prod.xyz.com$" />
<add input="{REMOTE_ADDR}" pattern="^111.000.111.d{1,3}$|^111.111.222.d{1,3}$^111.222.333.d{1,3}$" />
</conditions>
<action type="Redirect" url="https://test.xyz.com/" />
</rule>

谨致问候。

最新更新