IIS重写以删除某些查询字符串参数并重定向到原始请求的主机

时间:2014-03-06 19:56:28

标签: iis rewrite

我需要编写一个重定向来删除某个特定参数时的参数,但我希望重定向与传入的URL相同,只是没有参数。这就是我所拥有的,它不起作用。我想如果我把请求URI放在那里而不附加查询字符串,那么它会起作用但它会导致循环。有人曾经这样做过吗?

<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" />

2 个答案:

答案 0 :(得分:5)

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 =匹配page参数
  • 之前的所有内容
  • C:2 =是 匹配自己,以及我们想要排除的内容
  • C:3 =之后的一切 匹配page参数

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

答案 1 :(得分:2)

通过以下方式获得:

<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" />