IIS根据查询字符串值重写

时间:2019-04-22 06:28:52

标签: iis asp.net-web-api mod-rewrite url-rewriting routing

我是IIS Rewrite的新手,需要有人协助我

我正在根据查询字符串值重定向到另一个域。

例如:

请求:

http://localhost:50743/api/Values?stdId=1000&stdName="Test"

http://localhost:50752/api/Values?stdId=1001&stdName="Test1"

http://localhost:50753/api/Values?stdId=1002&stdName="Test2"

http://localhost:50754/api/Values?stdId=1004&stdName="Test4"

我只需要验证查询字符串,然后根据 stdId

将请求重定向到不同的域

如果 stdId = 1000 请求必须重定向到http://localhost:50743/api/Values?stdId=1000&stdName="Test"

如果必须将 stdId = 1001 请求重定向到 http://localhost:50752/api/Values?stdId=1001&stdName="Test1"

如果必须将 stdId = 1002 请求重定向到 http://localhost:50753/api/Values?stdId=1002&stdName="Test1"

等。

编码我尝试过的内容:

<rewrite>
      <rules>
        <rule name="Redirect to another service" stopProcessing="true">
          <match url="(.*)" />
          <conditions>                
            <add input="{QUERY_STRING}" negate="false" pattern="(stdId=1000)" />
          </conditions>
          <action type="Redirect" url="http://localhost:50762/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
</rewrite>

1 个答案:

答案 0 :(得分:0)

您可以使用以下规则根据查询字符串重定向网址:

<rule name="querystring redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{QUERY_STRING}" pattern="stdId=1000" />
</conditions>
<action type="Redirect" url="http://localhost:50743/api/Values?stdId=1000&amp;stdName=&quot;Test&quot;" appendQueryString="false" />
</rule>

enter image description here

为每个URL查询字符串参数创建一个规则。 问候, 贾帕。