你如何覆盖Tuckey use-query-string设置?

时间:2011-04-16 00:08:22

标签: url-rewriting tuckey-urlrewrite-filter

我正在尝试在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”。

问题:如何正确传递查询字符串?

感谢您的考虑和任何建议,非常感谢!!

1 个答案:

答案 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&amp;$2</to>
</rule>

这里唯一的问题是,如果原始请求中没有查询字符串,“to”stmt仍然会在查询字符串的末尾添加一个&符号。为了解决这个问题,你可以创建2个重写规则,一个匹配查询字符串,另一个匹配out。