.Net Core / IIS 网络配置重写规则
.Net Core / IIS web config rewrite rules
在我的情况下,我有两个域:
domain.com
domain1.com
其中 domain1.com
是 domain.com
的别名
对于 domain1.com
,我只想允许以 api/
开头的网址的流量,并将所有其他流量重定向到 domain.com,状态代码为 301。
即我想允许像 domain1.com/api/products/list
这样的请求,另一方面我想将 domain1.com/products/list
重定向到 domain.com
任何人都可以指导如何使用 web.config 实现这一目标吗?
遵循 URL 重定向规则应该有效。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Domain1">
<match url="^(.+)" />
<conditions>
<add input="{HTTP_URL}" pattern="^/api/(.+)" negate="true" />
</conditions>
<action type="Redirect" url="http://domain/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
快速解释。
- 如果需要,我们使用
match
模式捕获整个传入 URL 用于重定向的反向引用。
- 而在
conditions
中我们否定了 API URLs 模式,因此该规则适用于 URLs not 包含 /api
.
- 重定向操作采用捕获的反向引用并将其附加到域。
注释。
- 您可能需要调整规则中的斜杠,我假设
/api
之后总会有一个斜杠。
- 浏览器大量缓存永久重定向,请确保每次修改规则时都使用 新 Incognito/Private 会话。
在我的情况下,我有两个域:
domain.com
domain1.com
其中 domain1.com
是 domain.com
对于 domain1.com
,我只想允许以 api/
开头的网址的流量,并将所有其他流量重定向到 domain.com,状态代码为 301。
即我想允许像 domain1.com/api/products/list
这样的请求,另一方面我想将 domain1.com/products/list
重定向到 domain.com
任何人都可以指导如何使用 web.config 实现这一目标吗?
遵循 URL 重定向规则应该有效。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Domain1">
<match url="^(.+)" />
<conditions>
<add input="{HTTP_URL}" pattern="^/api/(.+)" negate="true" />
</conditions>
<action type="Redirect" url="http://domain/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
快速解释。
- 如果需要,我们使用
match
模式捕获整个传入 URL 用于重定向的反向引用。 - 而在
conditions
中我们否定了 API URLs 模式,因此该规则适用于 URLs not 包含/api
. - 重定向操作采用捕获的反向引用并将其附加到域。
注释。
- 您可能需要调整规则中的斜杠,我假设
/api
之后总会有一个斜杠。 - 浏览器大量缓存永久重定向,请确保每次修改规则时都使用 新 Incognito/Private 会话。