Reescribir una Url en ASP .Net
Hay varias personas que quieren saber como se hace para “enmascarar una dirección web”, pues bien, si buscas documentación en la red te encontrarás con muchos aspectos teóricos y muy poco de la parte práctica y que sea simple de entender. En realidad no entiendo bien porque decir “Reescribir” una dirección url, ya que me parece mas un enmascaramiento y un proceso de desvío en segundo plano (o algo asi) pero en fin, el término es bastante buscado por la red y el método finalmente es “Reescribir“, así que le llamaremos de esa manera.
De que se trata? simple! acceder a una dirección Url que en realidad no existe, con la finalidad de dar un orden a la estructura de la aplicación ante los ojos de nuestros visitantes. Por ejemplo: si tuviésemos una página web que muestre prendas de vestir para nuestros clientes, y quisieramos ver ropa solo de hombres probablemente tengamos que acceder directamente con la siguiente dirección:
http://www.misitioweb.com/Destino.aspx?tipo=Hombres
Lo que sería poco amistoso para los visitantes, pero si le diésemos a nuestros visitantes direcciones web más amistosas como por ejemplo:
http://www.misitio.com/Hombres.aspx
De seguro que les sería mucho más simple que recordar, aunque en realidad, la página Hombres.aspx no existe. Pues bien, de eso se trata la reescritura de direcciones web. ¿Cómo se hace?, pues aquí vamos a revelar el secreto. Observen a continuación la siguiente imágen:

Para este ejemplo he utilizado 2 páginas, la primera Default.aspx, contiene dos objetos hiperlinks (aunque puede ser un hipervínculo común y silvestre) que redirecciona a dos páginas diferentes: Hombres.aspx y Mujeres.aspx (ver la propiedad NavigateUrl del objeto HyperLink), sin embargo, como se puede apreciar en el Explorador de Soluciones, en el proyecto no existen dichas páginas, el truco aquí es como ir a esas páginas sin obtener un error de tipo 404 (Page not found - Página no encontrada).
Para hacer esto he agregado un archivo Global.asax, este archivo permite identificar eventos que afecten a la aplicación, ahora, cada vez que se inicia una solicitud de un archivo en la aplicación se dispara el evento BeginRequest, para poder cumplir nuestro objetivo trabajaremos en este evento. Lo que hago aqui es verificar que la página solicitada no sea la página de Default y luego utilizar el método RewritePath (Reescribir Ruta) del objeto Context (Encapsula toda la información específica de HTTP acerca de una solicitud HTTP individual) para redireccionar la solicitud a la página Destino.aspx, pasándole como parámetro QueryString la ruta que he solicitado. Fin del truco!!!
Como se darán cuenta al probar esta aplicación, la dirección url que aparece en el navegador es la que figura en la propiedad NavigateUrl (Hombres.aspx), y no la que hemos redireccionado en el archivo Global.asax.
Claro está que esta forma de trabajar se puede mejorar y se pueden aplicar muchas consideraciones, pero la idea de este ejemplo es la de mostrar una forma sencilla de ejecutar este trabajo, siempre es bueno documentarse con los aspectos teóricos de estos métodos antes de escribir código indiscriminadamente.
Espero que les sea de utilidad.
Saludos.





Leave a Reply