IIS URL 使用条件重写规则
IIS URL rewrite rule using conditions
我在 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>
以下来源 url 符合预期。
http://domainname?item=1¶m1=x%param2=y
然而,重写的 url 在其查询字符串中包含 param1 和 param2。 {C:0} 不应该只转换为正则表达式组中匹配的内容,即 (item=1|all|none|first) 而不是它之后的任何内容吗?
重写在 ( )
之后捕获所有内容的原因是因为 {C:0}
捕获了整个匹配项,而不仅仅是组。由于您只想捕获 ( )
(捕获组 1)中的内容,您将使用:
{C:1}
另一个例子可能是:
^(item=1|all|none|first)/(abc).*$
因此仅捕获 abc
例如(捕获组 2):
{C:2}
我在 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>
以下来源 url 符合预期。
http://domainname?item=1¶m1=x%param2=y
然而,重写的 url 在其查询字符串中包含 param1 和 param2。 {C:0} 不应该只转换为正则表达式组中匹配的内容,即 (item=1|all|none|first) 而不是它之后的任何内容吗?
重写在 ( )
之后捕获所有内容的原因是因为 {C:0}
捕获了整个匹配项,而不仅仅是组。由于您只想捕获 ( )
(捕获组 1)中的内容,您将使用:
{C:1}
另一个例子可能是:
^(item=1|all|none|first)/(abc).*$
因此仅捕获 abc
例如(捕获组 2):
{C:2}