Правила перезаписи IIS с использованием {C: n} в качестве входных данных - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь переписать URL только в том случае, если часть queryString также присутствует в пути. Например:
Этот URL: http://www.mywebsite.com/func/api.ashx?method=func&p1=v1 действителен
, но этот URL http://www.mywebsite.com/path/api.ashx?method=func&p1=v1 не будет переписан.

Пока это то, что у меня есть:

<rewrite>
        <rules>
            <rule name="Name1" enabled="true">
                <match url="^(.+)" />
                <conditions trackAllCaptures="true">
                    <add input="{QUERY_STRING}" pattern="method=([^&amp;]*)" ignoreCase="false" />
                    <add input="{PATH_INFO}" pattern="\/(.*)\/" />
                    <add input="{{C:1}}" pattern="{{C:2}}" /> <!-- this is not working -->
                </conditions>
                <action type="Rewrite" url="/api.ashx" appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>

Можно ли это сделать? Какой лучший способ проверить, является ли метод частью пути, предполагая, что значение равно Dynami c.

Кстати - я пытался использовать группы в своих шаблонах method=(?<methodName>[^&amp;]*) IIS не нравится.

Спасибо

1 Ответ

0 голосов
/ 17 февраля 2020

Боюсь, мы не можем сделать это в IIS. Поскольку выражение регулярного выражения не поддерживается в атрибуте «input», а «{» не поддерживается в атрибуте «pattern». Поэтому мы не можем найти способ сопоставления двух групп захвата.

Возможно, вам потребуется сделать это только на уровне кода.

...