【问题标题】:IIS rewrite rule one query parameter with multiple valuesIIS 用多个值重写规则一查询参数
【发布时间】:2021-04-11 03:18:01
【问题描述】:

IIS web.config:

我正在尝试重定向类似的路径

mysite.com/?myparam=123,321,112 到 mysite.com/mypage?param=123,321,112

 <rule name="Multiple QueryValue String Rewrite" enabled="true">
          <match url="(.*)" />
          <conditions>
            <add input="{QUERY_STRING}" pattern="myparam=(.\,)" />            
          </conditions>
          <action type="Redirect" url="/mypage?param={C:0}" appendQueryString="false" />
        </rule>

但无论我尝试什么,它只会转发第一个参数。导致 /mypage?param=123

我尝试了 {C} 和模式正则表达式的多种组合。

【问题讨论】:

  • 你试过pattern="myparam=(.*)"吗?或pattern="myparam=([0-9,]*)"
  • 两者都导致 /mypage?param=123
  • Wiktor Stribiżew,对不起..您的回答是正确的。 (.*) 这是一个浏览器缓存问题 :)

标签: regex iis url-rewriting query-string


【解决方案1】:

重要提示:在尝试新事物之前,请记住始终清除浏览器的缓存!这是强制性的。

现在...

  1. 您使用的模式不正确,您必须使用 Wiktor Stribiżew 建议的一种

所以使用pattern="myparam=([0-9\,]*)url="/mypage?param={C:1}" 试试这个:

 <rule name="Multiple QueryValue String Rewrite" enabled="true">
          <match url="(.*)" />
          <conditions>
            <add input="{QUERY_STRING}" pattern="myparam=([0-9\,]*)" />            
          </conditions>
          <action type="Redirect" url="/mypage?param={C:1}" appendQueryString="false" />
 </rule>

如果不正确,那么“,”字符中有什么问题......关于编码的东西?

如果你试试这个会发生什么?:

 <rule name="Multiple QueryValue String Rewrite" enabled="true">
          <match url="(.*)" />
          <conditions>
            <add input="{QUERY_STRING}" pattern="myparam=([0-9]*)\,([0-9]*)\,([0-9]*)" />            
          </conditions>
          <action type="Redirect" url="/mypage?param={C:1},{C:2},{C:3}" appendQueryString="false" />
 </rule>

【讨论】:

  • 谢谢,这是浏览器缓存问题:)
【解决方案2】:

如果只针对mysite.com/?myparam=123,321,112,可以尝试以下网址重写规则:

 <rule name="Multiple QueryValue String Rewrite" enabled="true">
          <match url="(.*)" />
          <conditions>
            <add input="{QUERY_STRING}" pattern="myparam=(.*)" />            
          </conditions>
          <action type="Redirect" url="/mypage?param={C:1}" appendQueryString="false" />
        </rule>

【讨论】:

  • 谢谢,这是浏览器缓存问题 :) 正如 ValB 所说。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多