对于 URL 不包含字符串的 IIS URL 重写规则,正确的正则表达式语法是什么?

What is the proper regex syntax for a IIS URL Rewrite rule where a URL does NOT contain a string?

我正在尝试为 IIS 8.0 URL 模块编写正则表达式,其中:

(URL/en URL 以 /en/ 开头) URL NOT 包含 switchLanguage=true)

我的 web.config...

中有以下规则
<rule name="Remove Default Language" stopProcessing="true">
    <match url="(^en$|^en/(.*)$)(?&lt;!switchLanguage=true(.*))" />
    <conditions>
    </conditions>
    <action type="Redirect" url="{R:1}" />
</rule>

...但这会导致抛出 500.52 错误,并显示匹配语法无效的消息。

如有任何帮助,我们将不胜感激。

我想通了。看来我试图使用 RegEx 脚本完成太多工作。

以下规则有效 -- 注意否定条件。

<rule name="Remove Default Language" stopProcessing="true">
    <match url="^en$|^en/(.*)$" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="switchlanguage=true" negate="true" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{R:1}" />
</rule>