"%" IIS URL重写正则表达式中导致问题的字符

时间:2015-06-03 07:36:16

标签: 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="Redirect" url="/how-to-use-shop-name" redirectType="Permanent" />
</rule>

在IIS中使用内置的正则表达式测试程序进行测试告诉我点击

/c80/How-to-%20Use-Shop-Name.aspx

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

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

1 个答案:

答案 0 :(得分:2)

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

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

此外,如果空格是可选的,您可以在其后使用?

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