IIS重写:使用其中一个查询字符串参数作为部分或URL重定向

时间:2016-06-21 06:39:42

标签: iis url-rewriting

我想做的是如果我有链接:

http://www.test.com/photo/hfz6rhfgz/?offset=10

重写为:

http://www.test.com/photo/hfz6rhfgz/&offset=10

可能有其他查询参数和哈希可能在除第一个之外的其他地方......

问题是它会起作用,但由于偏移是我的规则的第二个参数,我得到:

?

这当然会导致错误,因为我需要&而不是<rule name="test-redirect" stopProcessing="true"> <match url="^photo.asp$" ignoreCase="true" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{QUERY_STRING}" pattern="^(.*)hash=([\w]{8})(.*)$" /> </conditions> <action type="Redirect" url="/photo/{C:2}/{C:1}{C:3}" redirectType="Permanent" appendQueryString="false" /> </rule> 。在重定向的URL中,偏移量就像第二个参数,在原始链接中,它是第二个参数。

这是我的重定向规则:

{{1}}

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案,但是如果有类似

的话

http://www.test.com/photo.asp?test=10&hash=jcekg876

它产生:

http://www.test.com/photo/jcekg876/?test=10&

所以最后一个放大器太多了,在其他情况下它可以正常工作。如果有人知道如何摆脱这个&amp;这会很好,因为我需要一个干净的URL重定向......

                <rule name="test-redirect" stopProcessing="true">
                <match url="^photo.asp$" ignoreCase="true" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{QUERY_STRING}" pattern="(.*)hash=([\w]{16})[&amp;]?(.*)" />
                </conditions>
                <action type="Redirect" url="/photo/{C:2}/?{C:1}{C:3}" redirectType="Found" appendQueryString="false" />
            </rule>