使用条件的IIS URL重写规则

时间:2015-04-26 14:50:35

标签: asp.net regex iis url-rewriting web-config

我在web.config文件中配置了以下URL重写规则:

<rule name="Test Rule" stopProcessing="true">
  <match url="^$" />
  <conditions>
    <add input="{QUERY_STRING}" pattern="^(item=1|all|none|first).*$" />
  </conditions>
  <action type="Rewrite" url="/newsite/test.asp?{C:0}" />
</rule>     

以下源网址按预期匹配。

http://domainname?item=1&param1=x%param2=y

然而,重写的url在其查询字符串中包含param1和param2。不应该{C:0}只转换为正则表达式组中匹配的内容,即(item = 1 | all | none | first)而不是之后的任何内容?

1 个答案:

答案 0 :(得分:1)

重写在( )之后捕获所有内容的原因是{C:0}抓取整个匹配,而不仅仅是群组。由于您只想捕获( )(捕获组1)中的内容,您将使用:

{C:1}

另一个例子可能是:

^(item=1|all|none|first)/(abc).*$

所以仅捕获abc例如(捕获组2):

{C:2}