在IIS重写中提取参数 - 我哪里出错了?

时间:2013-12-21 10:46:38

标签: iis url-rewriting web-config

如何将'/ path?foo = abc& bar = def'重定向到'/ path / abc / def'?

我尝试了以下内容:

<rule name="My rule" stopProcessing="false">
    <match url="^path" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="foo=/[^&amp;]*/" />
        <add input="{QUERY_STRING}" pattern="bar=(.*)" />
    </conditions>
    <action type="Redirect" url="/path/{C:0}/{C:1}" appendQueryString="false" />
</rule>

但这甚至不能处理我的比赛。我哪里错了?

1 个答案:

答案 0 :(得分:1)

我无法访问计算机来验证这一点,但我认为以下内容可以简化:

<rule name="Redirect old FAQ view" stopProcessing="false">
    <match url="^path.*" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="^foo=([^&]*).*?bar=(.*)" />
    </conditions>
    <action type="Redirect" url="/path/{C:0}/{C:1}" appendQueryString="false" />
</rule>

您不需要第二个输入行,因为您可以在一个输入行中使用多个捕获组。我不确定整条线是否会以匹配方式返回,因此您可能需要调整为{C:1}/{C:2}。最后,我不确定匹配网址是否有问题。它也会包含查询字符串,因此可能导致它丢失。查看here以获取有关URL重写过程的各个组件的更多详细信息。