IIS URL重写无法使用查询字符串
我认为这很简单,但它不起作用。旧的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
<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>