Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 21 de junio de 2011
ASP.NET MVCHace poco he puesto en producción una aplicación ASP.NET MVC 3 que sustituía una web anterior basada en puro HTML. Dado que este sitio llevaba ya activo varios meses, los usuarios, buscadores, y links entrantes hacían referencia a páginas concretas con extensión .htm y .html.

El caso es que al no existir ya estos archivos, el acceso a través de las referencias externas acababa siempre enviando al usuario hacia una página de error… y me parece que la mejor bienvenida que se puede dar a un visitante no es una página de error, por muy amigable que ésta sea ;-)

En lugar de esto, al menos durante un tiempo, he optado por redirigir las peticiones a archivos .htm y .html hacia la página principal utilizando una redirección permanente (301); así, además de no sorprender a los usuarios con un mensaje de error, supongo que ayudo a los miles de bots que pululan por el ciberespacio a encontrar los nuevos contenidos.

Redirección de peticiones

Siendo prácticos, la forma más rápida y sencilla de conseguirlo es utilizando una solución a la vieja usanza, introduciendo el siguiente código en el global.asax.cs:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    String originalPath = HttpContext.Current.Request.Url.AbsolutePath.ToLower();
    if (originalPath.IndexOf(".htm") != -1)
    {
        HttpContext.Current.Response.RedirectPermanent("/", true);
    }
}

Como podéis ver, en el principio del proceso de la petición, comprobamos si en su path existe la subcadena “.htm” (será cierto para .htm y .html), redirigiendo al raíz en caso afirmativo.

Y es que una de las cosas buenas que tiene ASP.NET MVC es que está construido sobre ASP.NET y, por tanto, podemos seguir utilizando muchos conocimientos que ya traíamos del mundo Webforms.

Publicado en: Variable not found.

1 comentario:

Anónimo dijo...

Esta me salvó de horas de investigación, no tienía una idea clara de cómo implementar una solución así.