IIS URL重写无法使用查询字符串

IIS URL重写无法使用查询字符串,url,iis,url-rewrite-module,Url,Iis,Url Rewrite Module,我认为这很简单,但它不起作用。旧的URL是 它需要重定向到。我不需要担心通配符,这是我唯一需要担心的查询字符串参数。我写的规则看起来像 <rule name="Node17" patternSyntax="ExactMatch" stopProcessing="true"> <match url="http://www.site.com/?q=node/17" /> <action type="Redirect" url="http://www.s

我认为这很简单,但它不起作用。旧的URL是

它需要重定向到。我不需要担心通配符,这是我唯一需要担心的查询字符串参数。我写的规则看起来像

<rule name="Node17" patternSyntax="ExactMatch" stopProcessing="true">
    <match url="http://www.site.com/?q=node/17" />
    <action type="Redirect" url="http://www.site.com" appendQueryString="False" />
</rule>


我可以测试IIS内部的模式,它匹配,但当我在浏览器中点击URL时,它不会重定向。有什么想法吗?

当然,我在发帖后很快就想出来了。就是这样,我不知道为什么exactmatch不起作用

<rule name="Node17" stopProcessing="true">
    <match url=".*" />
<conditions>
    <add input="{QUERY_STRING}" pattern="q=node/17" />
</conditions>
<action type="Redirect" url="http://www.site.com" appendQueryString="False" />
</rule>

如中所述:

理解URL字符串的某些部分是如何工作的是很重要的 可以从重写规则访问

对于此表单中的HTTP URL: http://{host}:{port}/{path}?{querystring}

{path}与规则的模式匹配。这个 {querystring}在名为QUERY\u STRING的服务器变量中可用 并且可以通过使用规则中的条件来访问

规则条件允许为规则计算定义其他逻辑。。。 规则模式匹配成功后,将评估规则条件

在要重写为重定向的URL中,您的
{host}=“www.site.com”
{path}=”“
{querystring}=“q=node/17”
。因此,您想要重定向的URL中的
{path}
部分实际上是空的,您在问题中使用的规则与之匹配,但不匹配

您的解决方案确实有效,因此我将在这里引用:

<rule name="Node17" stopProcessing="true">
    <match url=".*" />
<conditions>
    <add input="{QUERY_STRING}" pattern="q=node/17" />
</conditions>
<action type="Redirect" url="http://www.example.com" appendQueryString="False" />
</rule>