IIS URL Rewrite Module : Redirect Based On QueryString

前端 未结 2 1496
悲&欢浪女
悲&欢浪女 2020-12-24 12:16

I Have some problems with redirecting to another URL based on the query string parameters. I want to redirect users which enter www.domain.com/signup.aspx?p=1 to:

w

相关标签:
2条回答
  • 2020-12-24 13:12

    See if this works a bit better:

    <rule name="Signup Redirect 1" stopProcessing="true">
      <match url="signup\.aspx$" />
      <conditions>
        <add input="{QUERY_STRING}" pattern="p=1" />
      </conditions>
      <action type="Redirect" url="signup" redirectType="Temporary" />
    </rule>
    
    <rule name="Signup Redirect 2" stopProcessing="true">
      <match url="signup\.aspx$" />
      <conditions>
        <add input="{QUERY_STRING}" pattern="p=2" />
      </conditions>
      <action type="Redirect" url="signup/promocode" redirectType="Temporary" />
    </rule>
    
    0 讨论(0)
  • 2020-12-24 13:21

    A more robust method of using a value to select a destination is to use Rewrite Maps. The map is essentially a lookup table. This doesn't require a new rule (and an additional evaluation of the URL against a pattern on every request) for every new path.

    <rules>
      <rule name="Signup Redirect Map" stopProcessing="true">
        <match url="^signup\.aspx$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
          <add input="{QUERY_STRING}" pattern="p=([^&amp;]+)" />
          <add input="{Signups:{C:1}}" pattern="(.+)" />
        </conditions>
        <action type="Redirect" url="{C:2}" redirectType="Temporary" />
      </rule>
    </rules>
    <rewriteMaps>
      <rewriteMap name="Signups">
        <add key="1" value="signup" />
        <add key="2" value="signup/promocode" />
        <add key="3" value="signup/newcode" />
        <add key="n" value="signup/futureproof" />
      </rewriteMap>
    </rewriteMaps>
    

    Definitions:

    • {C:1} is a backreference to the first condition match: the query string value.
    • {Signups:{C:1}} is an instruction to look up {C:1} in the Signups map.
    • {C:2} is a backreference to the second condition match: the value from the Signups map.
    0 讨论(0)
提交回复
热议问题