我正在尝试在urlrewrite.xml中向这样的重定向网址添加查询参数:
<rule>
<condition name="host">www.foo.com</condition>
<from>^/foo/bar</from>
<to type="redirect" last="true">http://www.bar.com/foo/bar?test=testString</to>
</rule>
但是进入的请求已经有了一个参数,并且生成的重定向网址是:
http://www.bar-d.mtvi.com/foo/bar?test=testString?test2=test2String
注意第二个“?”。
我想要的是这个:
http://www.bar-d.mtvi.com/foo/bar?test=testString&test2=test2String
在urlrewrite元素中将use-query-string设置为“true”。
问题:如何正确传递查询字符串?
感谢您的考虑和任何建议,非常感谢!!
答案 0 :(得分:1)
好的,我想出来了。发生这种情况是因为我没有用“$”符号关闭“来自”匹配。以下是它的外观:
<rule>
<condition name="host">www.foo-d.com</condition>
<from>^/foo/bal(\?)?(.*)?$</from>
<to type="redirect" last="true">http://www.bar-d.mtvi.com/foo/bar?test=testString&$2</to>
</rule>
这里唯一的问题是,如果原始请求中没有查询字符串,“to”stmt仍然会在查询字符串的末尾添加一个&符号。为了解决这个问题,你可以创建2个重写规则,一个匹配查询字符串,另一个匹配out。