对于 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/(.*)$)(?<!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>
我正在尝试为 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/(.*)$)(?<!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>