Я пытаюсь сравнить две группы захвата внутри условия ввода URL перезаписи в IIS web.config.
Мне нужно сделать это, потому что я не хочу, чтобы пользователи обращались к языковым URL-адресам (например, / en / path), если их файл cookie с языковым кодом не соответствует языку в URL.
Я пытался добиться с помощью этого правила в моем webconfig, но кажется, что это невозможно сделать так, потому что сервер отвечает с ошибкой 500.52:
The expression "^((?!{C:2}).)*$" contains a repeat expression (one of '*', '?', '+', '{' in most contexts) that is not preceded by an expression.
Этопринимая мой {C: 2} как часть самого регулярного выражения, а не необработанную строку.
Это полное правило:
<rule name="redirect-with-lang" stopProcessing="true">
<match url="en\/|es\/|mx\/" ignoreCase="true"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_COOKIE}" pattern="langpref=\w{2}\/(\w{2});" />
<add input="{REQUEST_URI}" pattern="^(\/es\/|\/en\/|\/mx\/).+$" />
<add input="{C:1}" pattern="^((?!{C:2}).)*$"/>
</conditions>
<action type="Redirect" url="/{C:1}/{C:3}" />
</rule>
Я хочу знать, смогу ли я достичь этогопо-другому, не прибегая к JavaScript или некоторому коду сервера в Global.asax.
Спасибо