2014-03-06 22 views
3

我需要编写一个重定向来剥离参数,当某个存在时,但我希望重定向与传入url相同,没有参数。这是我的,它不工作。我想如果我把请求URI放在那里而不追加查询字符串,那么它会工作,但它会导致一个循环。有没有人做过这个?IIS重写删除某些查询字符串参数并重定向到原始请求的主机

<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

与明白了以下几点:

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

4

与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 =为 比赛本身,我们要排除
  • Ç什么: 3 =一切 匹配page参数

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

相关问题