是否可以使用URL重写来提供比“追加查询string”checkbox更复杂的查询stringfunction? 具体而言,是否可以为某些查询string参数指定键,并使其只能附加这些名称值对。
例如,对于input:
http://www.example.org/test?alpha=1&beta=2&gamma=3
和查询string参数键列表:beta伽马
它应该输出: http : //www.example.org/redirect?beta=2&gamma=3
(请注意,input中的查询string参数以任意顺序出现。)
我的解决scheme将是使用条件。 通过将条件与{QUERY_STRING}匹配,您可以使用反向引用在redirectURL中使用它们。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Redirect" stopProcessing="true"> <match url="(.*)" /> <conditions trackAllCaptures="true"> <add input="{QUERY_STRING}" pattern="&?(beta=[^&]+)&?" /> <add input="{QUERY_STRING}" pattern="&?(gamma=[^&]+)&?" /> <add input="{REQUEST_URI}" pattern="^/redirect" negate="true" /> </conditions> <action type="Redirect" url="/redirect?{C:1}&{C:2}" appendQueryString="false" redirectType="Found" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
这个解决scheme唯一可能的问题可能是(取决于你想要的)是只有在查询string中存在beta和gamma查询stringvariables时才会发生redirect。 如果不是,redirect将不会发生。
redirect规则与任何URL( (.*) )匹配。 如果需要,你可以改变它。 我还增加了一个额外的条件,使得没有匹配redirectURL本身的规则,否则会导致redirectURL本身被redirect。