Regex "E;%&引用;IIS URL重写正则表达式中导致问题的字符

Regex "E;%&引用;IIS URL重写正则表达式中导致问题的字符,regex,asp.net-mvc,iis,url-rewriting,Regex,Asp.net Mvc,Iis,Url Rewriting,我正在重新组建一家在线商店,其中一部分是为客户可能已添加书签以点击新地址的旧链接编写301重定向。它们都与旧地址中包含%字符的地址不同。它似乎在某种程度上干扰了正则表达式。规则是: <rule name="Custom 41 redirect" stopProcessing="true"> <match url="^c80/How-to-%20Use-Shop-Name\.aspx" ignoreCase="true" /> <action type="Re

我正在重新组建一家在线商店,其中一部分是为客户可能已添加书签以点击新地址的旧链接编写301重定向。它们都与旧地址中包含
%
字符的地址不同。它似乎在某种程度上干扰了正则表达式。规则是:

<rule name="Custom 41 redirect" stopProcessing="true">
  <match url="^c80/How-to-%20Use-Shop-Name\.aspx" ignoreCase="true" />
  <action type="Redirect" url="/how-to-use-shop-name" redirectType="Permanent" />
</rule>

在IIS中使用内置的正则表达式测试仪进行测试,结果表明

/c80/如何-%20Use-Shop-Name.aspx

匹配模式,但当我点击该地址时,规则无法重定向我


我还应该强调,在我的web.config中大约有400次重写,但只有3次重写包含
%
字符中断。

由于针对正则表达式测试的字符串已被Url解码,您不再需要正则表达式中的
%20
。只需使用普通空间:

<match url="^c80/How-to- Use-Shop-Name\.aspx" ignoreCase="true" />

如果你只是用一个普通的空格``来代替呢?可能输入字符串被解释为URL解码字符串。@Stribizev您是正确的,谢谢!Grea,我加上它作为答案。谢谢你的解答。但它只有在%20介于两者之间时才起作用。如果%20在句子的最后,那么它不起作用。你能帮忙吗?@Juhi你可以用
\s*
匹配0个或更多的空格。将其放在可能出现空格的模式中的任何位置。我的url是“但不是”working@Juhi请注意,
+
是一个特殊的regex元字符,必须使用
\
进行转义。转义
+
后,在模式末尾添加
\s*
。我尝试了使用“staging.Temp.com/about us/Optimization Institute-\target/\s*但仍然存在相同的问题
<match url="^c80/How-to- ?Use-Shop-Name\.aspx" ignoreCase="true" />