我在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¶m1=x%param2=y
然而,重写的url在其查询字符串中包含param1和param2。不应该{C:0}只转换为正则表达式组中匹配的内容,即(item = 1 | all | none | first)而不是之后的任何内容?
答案 0 :(得分:1)
重写在( )
之后捕获所有内容的原因是{C:0}
抓取整个匹配,而不仅仅是群组。由于您只想捕获( )
(捕获组1)中的内容,您将使用:
{C:1}
另一个例子可能是:
^(item=1|all|none|first)/(abc).*$
所以仅捕获abc
例如(捕获组2):
{C:2}