instalar - Módulo de reescritura de URL de IIS: redireccionamiento basado en QueryString
redireccionar http a https iis (2)
Tengo algunos problemas con la redirección a otra URL en función de los parámetros de cadena de consulta. Deseo redirigir a los usuarios que ingresan a 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 ingresan a www.domain.com/signup.aspx?p=2 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 forma correcta de hacer esto? Gracias por adelantado.
Gramo
Martijn
Un método más robusto de usar un valor para seleccionar un destino es usar Rewrite Maps. El mapa es esencialmente una tabla de búsqueda. Esto no requiere una nueva regla (y una evaluación adicional de la URL contra un patrón en cada solicitud) para cada ruta nueva.
<rules>
<rule name="Signup Redirect Map" stopProcessing="true">
<match url="^signup/.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{QUERY_STRING}" pattern="p=([^&]+)" />
<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 a la primera coincidencia de condición: el valor de la cadena de consulta.
- {Signups: {C: 1}} es una instrucción para buscar {C: 1} en el mapa de Signups.
- {C: 2} es una retro-referencia a la segunda coincidencia de condición: el valor del mapa de Signups.
Vea 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>