0

我想将特定的 url 重定向到另一台服务器。以下是我的重写规则:

<rewrite>
    <rules>
        <rule name="mydomain" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="(http|https)(://domain1\.)(example\.)(com|net)(/research)(.*)" />
            <action type="Redirect" url="{R1}://{R3}{R4}/domain1research" />                   
        </rule>
    </rules>
</rewrite>

我期望如果用户键入https://domain1.example.com/research,他们应该被重定向到https://example.com/domain1research。我已经在 url(.com、.net 和查询字符串)上测试了具有多种变体的表达式,并且它始终匹配。但是当我运行该网站时,它永远不会被重定向到另一个页面。我在许多网络应用程序中都进行了 URL 重写,它们都工作正常。我无法将手指放在我在这里缺少的东西上。

我已经在本地尝试使用主机文件中的条目和 Azure 上已发布的网站(Asp.Net MVC),但没有任何效果。

4

1 回答 1

0

根据@lex Li 的博客文章和 Microsoft 文档,以下重写工作:

<rewrite>
    <rules>
        <rule name="mydomain" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="research" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                    <add input="{HTTP_HOST}" pattern="(domain1\.)(example\.(com|net)" />
                </conditions>
            <action type="Redirect" url="https://{C:2}/domain1research" />                   
        </rule>
    </rules>
</rewrite>
于 2020-08-05T00:50:40.843 回答