IIS 重写规则一个具有多个值的查询参数
IIS rewrite rule one query parameter with multiple values
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} 和模式正则表达式的多种组合。
重要提示:在尝试新事物之前,请记住始终清除浏览器缓存!这是强制性的。
现在...
- 您使用的模式不正确,您必须使用 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>
如果只针对mysite.com/?myparam=123,321,112,可以尝试如下URL改写规则:
<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>
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} 和模式正则表达式的多种组合。
重要提示:在尝试新事物之前,请记住始终清除浏览器缓存!这是强制性的。
现在...
- 您使用的模式不正确,您必须使用 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>
如果只针对mysite.com/?myparam=123,321,112,可以尝试如下URL改写规则:
<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>