IIS и веб-приложение Azure не выбирают правило перезаписи URL

Я хочу перенаправить определенный 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-адреса во многих веб-приложениях, и все они работают нормально. Я не могу понять, что мне здесь не хватает.

Я пробовал это локально с записью в файле hosts и на опубликованном веб-сайте (Asp.Net MVC) в Azure, но ничего не работает.


person TheVillageIdiot    schedule 04.08.2020    source источник
comment
Ошибка 1 blog.lextudio.com/   -  person Lex Li    schedule 04.08.2020


Ответы (1)


Согласно блогу @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>
person TheVillageIdiot    schedule 05.08.2020