c# - URL 重写多个 AND 条件重定向
问题描述
我正在寻找一个 URL 重写规则来重定向从下面的 IP 子网列表中对www.XYZ.com、inte.XYZ.com、prep.XYZ.com 和 prod.XYZ.com 发出的任何请求以重定向到https: //test.XYZ.com。
111.000.111.0/24
111.111.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 && 的 AND 条件来执行重定向操作。
即,如果 url 是 www.xyz.com,给定正则表达式中的任何 Ip 地址范围,如 111.000.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>
推荐阅读
- json - Sveltekit 的新手:我怎样才能正确地创建一个 json 到 base64 字符串....而不破坏另一个导入的组件
- c# - 我想在我的编辑控制器中显示与我的下拉列表关联的数据,以便值动态变化
- ios - 我可以复制 iPhone 通知中的文本并发送到电报频道吗?
- multithreading - 了解 Julia 中的多线程行为
- c++ - 使用自定义工具包使用 VSC 和 CMake 编译 C++20
- python - 尽管运行 pip install -r requirements.txt,但找不到 Python 模块
- flutter - MissingPluginException(MissingPluginException(在通道 lyokone/location 上找不到方法 getLocation 的实现))
- r - R:在组内的所有列对上应用函数和/或回归(由时间定义)
- python - 从类内部另一个类调用函数
- android - 在警报对话框中,如何减少“消息”和我的视图之间的间距?