write redireccionar instalar enmascarar configurar activar asp.net regex iis url-rewriting

asp.net - instalar - redireccionar http a https iis



Regex para extraer una parte de una URL y usarla como referencia en la reescritura de URL (1)

OK, me pregunto si alguien puede echar una mano con una expresión regular que estoy tratando de escribir.

Básicamente, lo que quiero hacer es usar el módulo urlrewrite de IIS para hacer un redireccionamiento a una URL específica si el usuario accede a una URL en otro sitio. La única pega es que también debo capturar un poco de la cadena de consulta y moverla a la redirección. Creo que de hecho tengo la expresión regular correcta para esto, pero está implementándola en mi web.config que está causando el problema.

así que aquí está la entrada, la URL a la que un usuario puede acceder se verá así:

https://of.example.com/sfsv3.aspx?waform=pro&language=en

Quiero hacer coincidir esa URL (ya sea http o https, sin distinción de mayúsculas y minúsculas) y capturar también una información, el código de dos letras. entonces la url que quiero reenviar al usuario se ve así:

http://example.com/ca/en/ppf

(donde en es reemplazado por lo que capturé arriba)

Entonces, estoy trabajando con el módulo de Reescritura de IIS, y he obtenido mis datos de entrada y expresiones regulares, hasta ahora el patrón de expresiones regulares que tengo es el siguiente:

https?://of.example.com/sfsv3.aspx/?waform=pro&(language=(..))

así que básicamente estoy combinando toda la cadena, más un grupo y un subgrupo para el lenguaje y su código. en el diálogo de patrón de prueba de IIS, esto está funcionando.

Obtengo lo siguiente

{R: 1} language = en

{R: 2} en

¡estupendo! entonces mi regla de reescritura de IIS debería verse así para redirigir al usuario:

<system.webServer> <rewrite> <rules> <rule name="test" stopProcessing="true" enabled="true"> <match url="https?://of.example.com/sfsv3.aspx/?waform=pro&(language=(..))" ignoreCase="true" /> <action type="Redirect" url="http://www.example.com/ca/{R:2}/ppf" /> </rule> </rules> </rewrite> </system.webServer>

todo esto me parece correcto. sin embargo, IIS se está resistiendo y diciendo que mi web.config no es válido. específicamente, dice "Entidad" ("no está definido" y apunta al (justo antes de que el lenguaje sea el problema. Por lo tanto, no puedo compilar o implementar esta aplicación hasta que lo solucione. Si lo construyo sin y luego solo intente colocar eso en la web.config, me sale un error al cargar el sitio:

HTTP Error 500.19 - Error interno del servidor No se puede acceder a la página solicitada porque los datos de configuración relacionados para la página no son válidos.

¿Puede alguien ayudarme a encontrar la forma correcta de poner un grupo de captura en una regla de reescritura?


Olvidaste codificar el ampersand. Debiera ser:

<system.webServer> <rewrite> <rules> <rule name="test" stopProcessing="true" enabled="true"> <match url="https?://of.example.com/sfsv3.aspx/?waform=pro&amp;(language=(..))" ignoreCase="true" /> <action type="Redirect" url="http://www.example.com/ca/{R:2}/ppf" /> </rule> </rules> </rewrite>