Tengo algunos problemas con redirigir a otra dirección URL basada en los parámetros de cadena de consulta. Quiero redireccionar a los usuarios que entrar www.domain.com/signup.aspx?p=1 a:

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>

Ahora cuando entran www.domain.com/signup.aspx?p=2 ellos deben ir a:

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>

Las reglas anteriores no funcionan. ¿Cuál es la manera correcta de hacerlo? Gracias de Antemano.

Gr

Martijn

InformationsquelleAutor Martijn B | 2010-02-13

2 Comentarios

  1. 31

    Ver si esto funciona un poco mejor:

    <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>
    
    • Gracias funcionó!
    • Esto funcionó para mí, y me salvó el día – Gracias
  2. 38

    Un método más eficaz de usar un valor para seleccionar un destino, es el uso de la Reescritura de los Mapas. El mapa es esencialmente una tabla de búsqueda. Esto no requiere de una nueva regla (y una evaluación adicional de la URL en contra de un patrón en cada solicitud), por cada nuevo camino.

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

    Definiciones:

    • {C:1} es una referencia inversa a la primera condición de partido: el valor de cadena de consulta.
    • {Inscripciones:{C:1}} es una instrucción para buscar {C:1} en las Inscripciones mapa.
    • {C:2} es una referencia inversa a la segunda condición para que coincidan con: el valor de las Inscripciones mapa.

Dejar respuesta

Please enter your comment!
Please enter your name here