URL重写IIS 7.5“?”请求网址中的字符

时间:2013-11-07 12:33:22

标签: regex wcf iis-7 url-rewriting web-config

我有一个传入请求网址:

http://localhost/MyService/myservice.svc?serverInfo&pVersion=00

我在webconfig中写了一条规则(在IIS管理器中使用URL Rewrite):

<rule name="ServerInfo" stopProcessing="true">
                    <match url="myservice[.]svc[\?]serverInfo[&amp;]pVersion[=]([^]+)" />
                    <action type="Redirect" url="myservice.svc/folder/serverInfo/pVersion={R:1}" />
                </rule>

但由于我在匹配网址中使用了&#34;?&#34; 字符,因此无效。

如何更改正则表达式才能正常工作?

(我必须进行重定向/重写,因为它是一个宁静的WCF服务,而且它不支持传入网址的类型)

1 个答案:

答案 0 :(得分:0)

请改为:

<rule name="ServerInfo" stopProcessing="true">
  <match url="myservice.svc" ignoreCase="true" />

  <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="serverInfo&amp;pVersion=([^]+)" />
  </conditions>

  <action type="Redirect" 
          url="myservice.svc/folder/serverInfo/pVersion={C:1}" 
          appendQueryString="false" 
          redirectType="Found" />
</rule>