IIS重写以删除某些querystring参数并重定向到原始请求的主机

IIS重写以删除某些querystring参数并重定向到原始请求的主机,iis,rewrite,Iis,Rewrite,当某个参数存在时,我需要编写一个重定向来去除参数,但我希望重定向与传入url相同,只是没有参数。这就是我所拥有的,但它不起作用。我想如果我把请求URI放在那里而不附加querystring,那么它会工作,但会导致一个循环。以前有人这样做过吗 <rule name="Remove parameters" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <conditions trackAllC

当某个参数存在时,我需要编写一个重定向来去除参数,但我希望重定向与传入url相同,只是没有参数。这就是我所拥有的,但它不起作用。我想如果我把请求URI放在那里而不附加querystring,那么它会工作,但会导致一个循环。以前有人这样做过吗

<rule name="Remove parameters" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions trackAllCaptures="true">
  <add input="{QUERY_STRING}" pattern="page=([0-9]+)" />
</conditions>
<action type="Redirect" url="{REQUEST_URI}" appendQueryString="false" />


通过以下方式获得:

<rule name="Remove paging parameters" stopProcessing="true">
<match url="(.*)?$" />
<conditions trackAllCaptures="true">
  <add input="{QUERY_STRING}" pattern="page=([0-9]+)" />
</conditions>
<action type="Redirect" url="{R:1}" appendQueryString="false" />


jallen回答的问题是整个查询字符串将被删除,如果您想维护其中的某些部分,这可能并不理想。备选方案如下:

<rule name="Remove paging parameters" stopProcessing="true">
    <match url="(.*)?$" />
    <conditions trackAllCaptures="true">
        <add input="{QUERY_STRING}" pattern="(.*)(page=.+)(.*)" />
    </conditions>
    <action type="Redirect" url="{C:1}{C:3}" appendQueryString="false" />
</rule>

  • C:1=匹配
    页面
    参数之前的所有内容
  • C:2=是最大值 匹配本身,以及我们要排除的内容
  • C:3=会议结束后的所有事项 匹配
    页面
    参数

因此,我们使用重定向
{C:1}{C:3}
仅排除页面查询字符串。

标题说删除某些参数,而问题主体说删除所有参数。幸运的是,我们对以下两个问题都有答案:)