IIS и Azure веб-приложение не выбирает правило перезаписи URL - PullRequest
0 голосов
/ 04 августа 2020

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

1 Ответ

0 голосов
/ 05 августа 2020

Согласно сообщению в блоге @ 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>
...