IIS重写以删除某些querystring参数并重定向到原始请求的主机
当某个参数存在时,我需要编写一个重定向来去除参数,但我希望重定向与传入url相同,只是没有参数。这就是我所拥有的,但它不起作用。我想如果我把请求URI放在那里而不附加querystring,那么它会工作,但会导致一个循环。以前有人这样做过吗IIS重写以删除某些querystring参数并重定向到原始请求的主机,iis,rewrite,Iis,Rewrite,当某个参数存在时,我需要编写一个重定向来去除参数,但我希望重定向与传入url相同,只是没有参数。这就是我所拥有的,但它不起作用。我想如果我把请求URI放在那里而不附加querystring,那么它会工作,但会导致一个循环。以前有人这样做过吗 <rule name="Remove parameters" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <conditions trackAllC
<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}
仅排除页面查询字符串。标题说删除某些参数,而问题主体说删除所有参数。幸运的是,我们对以下两个问题都有答案:)