Asp.net core .Net核心/IIS web配置重写规则

Asp.net core .Net核心/IIS web配置重写规则,asp.net-core,web-config,url-rewrite-module,asp.net-core-2.0,iis-10,Asp.net Core,Web Config,Url Rewrite Module,Asp.net Core 2.0,Iis 10,在我的情况下,我有两个领域: domain.com domain1.com 其中domain1.com是domain.com 对于domain1.com我只允许以api/开头的URL的流量,并将所有其他流量重定向到domain.com,状态代码为301 i、 e.我想允许像domain1.com/api/products/list这样的请求,另一方面,我想将domain1.com/products/list重定向到domain.com 任何人都可以指导如何使用web.config实现这一点吗?

在我的情况下,我有两个领域:

domain.com
domain1.com
其中
domain1.com
domain.com

对于
domain1.com
我只允许以
api/
开头的URL的流量,并将所有其他流量重定向到domain.com,状态代码为301

i、 e.我想允许像
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,以便在需要时为重定向返回参考
  • 条件中
    我们否定API URL模式,因此该规则应用于不包含
    /API
    的URL
  • 重定向操作获取捕获的返回引用并将其附加到域
注释

  • 您可能需要调整规则中的斜杠,我假设
    /api
    之后总会有斜杠
  • 浏览器大量缓存永久重定向,请确保每次修改规则时使用新的匿名/专用会话

以下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,以便在需要时为重定向返回参考
  • 条件中
    我们否定API URL模式,因此该规则应用于不包含
    /API
    的URL
  • 重定向操作获取捕获的返回引用并将其附加到域
注释

  • 您可能需要调整规则中的斜杠,我假设
    /api
    之后总会有斜杠
  • 浏览器大量缓存永久重定向,请确保每次修改规则时使用新的匿名/专用会话

非常感谢伊格纳斯:)非常感谢伊格纳斯:)