martes, 21 de junio de 2011
Hace 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.
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:
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.
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.
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:
Esta me salvó de horas de investigación, no tienía una idea clara de cómo implementar una solución así.
Enviar un nuevo comentario