如何将'/ path?foo = abc& bar = def'重定向到'/ path / abc / def'?
我尝试了以下内容:
<rule name="My rule" stopProcessing="false">
<match url="^path" />
<conditions>
<add input="{QUERY_STRING}" pattern="foo=/[^&]*/" />
<add input="{QUERY_STRING}" pattern="bar=(.*)" />
</conditions>
<action type="Redirect" url="/path/{C:0}/{C:1}" appendQueryString="false" />
</rule>
但这甚至不能处理我的比赛。我哪里错了?
答案 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重写过程的各个组件的更多详细信息。