我想我正在尝试做一些应该简单的事情。我希望有一个重写规则,从许多域中获取任何传入请求,并将其重写为/redirect.aspx?src=original URL
这就是我所拥有的
<rewrite>
<rules>
<rule name="SimpleURL" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{URL}" negate="true" pattern="\.aspx$"/>
</conditions>
<action type="Redirect" url="/Redirect.aspx?src={R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
它的工作原理除了传递的查询参数是src =没有任何值。
我进行了更改,现在它正在传递查询参数
的硬编码值I made a change so it is now passing a value for the parameter.
<rewrite>
<rules>
<rule name="SimpleURL" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{URL}" negate="true" pattern="\.aspx$"/>
<add input="{QUERY_STRING}" pattern="src=(.*)" negate="true" />
</conditions>
<action type="Redirect" url="/Redirect.aspx?src=foobar" appendQueryString="true" redirectType="Found" />
</rule>
</rules>
</rewrite>
如果我用{R:0}替换foobar,则不会传递任何值。在此输入代码硬编码的foobar值通过。
答案 0 :(得分:0)
您的规则看起来很好,并且在我的计算机上正常工作,但您使用的是永久重定向。测试时您是否对规则进行了任何更改?尝试从隐身/私密模式浏览器进行测试或测试其他网址。
请尝试以下规则:
<rule name="SimpleURL" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="true">
<add input="{URL}" negate="true" pattern="\.aspx$"/>
<add input="{QUERY_STRING}" pattern="src=(.*)" negate="true" />
<add input="{URL}" pattern="(.*)" />
</conditions>
<action type="Redirect" url="/Redirect.aspx?src={C:2}" appendQueryString="true" redirectType="Found" />
</rule>