29

クエリ文字列パラメーターに基づく別の URL へのリダイレクトに問題があります。www.domain.com/signup.aspx?p=1 と入力するユーザーを次の場所にリダイレクトしたい:

www.domain.com/signup

<rule name="Signup Redirect 1" stopProcessing="true">
  <match url="signup\.aspx\?p=1" />
  <conditions logicalGrouping="MatchAll" />
  <action type="Redirect" url="signup" redirectType="Temporary" />
</rule>

www.domain.com/signup.aspx?p=2 と入力すると、次の場所に移動する必要があります。

www.domain.com/signup/promocode

<rule name="Signup Redirect 2" stopProcessing="true">
  <match url="signup\.aspx\?p=2" />
  <conditions logicalGrouping="MatchAll" />
  <action type="Redirect" url="signup/promocode" redirectType="Temporary" />
</rule>

上記のルールは機能しません。これを行う正しい方法は何ですか?前もって感謝します。

グル

マルティン

4

2 に答える 2

41

値を使用して目的地を選択するより確実な方法は、Rewrite Maps を使用することです。マップは基本的にルックアップ テーブルです。これには、新しいパスごとに新しいルール (およびすべての要求でパターンに対する URL の追加の評価) は必要ありません。

<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>

定義:

  • {C:1} は、最初の条件一致 (クエリ文字列値) への後方参照です。
  • {Signups:{C:1}} は、Signups マップで {C:1} を検索するための指示です。
  • {C:2} は、2 番目の条件一致 (Signups マップからの値) への後方参照です。
于 2010-07-23T20:24:47.313 に答える
36

これが少しうまくいくかどうかを確認してください:

<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>
于 2010-02-13T13:47:52.473 に答える