Rewrite en .Net

Una de las características de la optimización de tu site de cara a los buscadores trata sobre colocar palabras clave en la URL. Esto es, en vez de tener una URL con parámetros numéricos tipo “tuweb.com?p=456”, meter algo del estilo: “tuweb.com/manual-seo”.

Además, a esta característica se la denomina “friendly url”, ya que permite al usuario identificar mejor dónde se encuentra y hasta acceder a otro punto modificando él mismo la URL. Pongamos unos ejemplos:

http://www.entrecodigos.com?p=126&z=mgd90ijret$g3fo@3&ui=aAdtygbvAShVdrg
http://www.entrecodigos.com/un-articulo-cualquiera
http://www.entrecodigos.com/2008/03/un-articulo-cualquiera
http://www.misupermercado.com/frutas/fresas/

En la primera URL, vemos que para acceder a la página que hemos solicitado son necesarios un montón de parámetros con datos dificilmente comprensibles, esto no solo no nos sirve para posicionarnos en Google, sino que además es de difícil comprensión para el usuario (imaginemos que quiere apuntarse la URL en un folio para pasársela a un amigo o enviarla por email), la segunda opción es mas comprensible y fácil de recordar, además contiene palabras clave (o puede contenerlas), y la tercera, quizás la mejor, permite recordar fácilmente al usuario la URL, contiene palabras clave y, además, permite al usuario acceder a otras secciones o categorías de la web cambiando la misma (es el modelo de wordpress, por fechas), como último ejemplo, el cuarto, es igual al tercero pero imaginando el sistema implementado en un supermercado.

¿Cómo lo hago?

Cada lenguaje de programación tiene su propio sistema, desde el PHP al Java pasando por .Net, yo os mostraré como de sencillo es hacerlo en ASP.Net. Para ello basta con ir a la librería “System.Web.HttpContext.Current” y utilizar la función RewritePath(), lo que nos permite redirigir una petición internamente (no confundir con el Response.Redirect, que realiza otra petición a la página). Lo mejor es captar la petición en el Global Asax y redirigirla a donde nos convenga:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
If Current.Request.Path.ToLower.Contains("manual-seo") Then
System.Web.HttpContext.Current.Rewrite("http://www.entrecodigos.com?p=456")
End If
End Sub

Por supuesto, yo he puesto un condicional para mostrar un ejemplo, pero en ese punto debería ir la función que haga la consulta a la base de datos para determinar la url original (la que lleva el parámetro) o una llamada a la clase que se encarga de escribir y leer estas URLs, opción que te recomiendo para tener un mayor control sobre las mismas.

11 thoughts on “Rewrite en .Net”

  1. Si no me equivoco, esa es la forma de hacerlo en php, me pregunto como será en los servlets de Java… ¿alguien lo sabe?

  2. En realidad es la forma de hacerlo con Apache, así que en teoría, supongo que serviría también para CGI’s en Perl (o en lo que quieras) …

    De todas formas, la ventaja del mod_rewrite es que va en función de reglas (como si de expresiones regulares se tratase) por lo que con una línea nos vale, yo lo tengo así:

    (no es mi ejemplo que no tengo acceso a mi .htaccess)

    RewriteRule ^Noticias/(.+).html index.php?Operacion=Noticias&Titulobonito=$1

    Y ya está, siempre que venga un Noticias/xxx.html me redirige a ese otro sitio (no recuerdo como era exactamente mi url destino). El titulo bonito es una variable que tengo en la BBDD de cada noticia y es índice junto a la id y se genera a través de una función que coge el título elimina caracteres raros y listo …

    Hay el pequeño bug de que pongas dos noticias con mismo título pero bueno, es mi web y me la follo cuando quiero XD

  3. Ajá, pues tienes razón, se que pertenece a Apache pero estoy tan acostumbrado a unir PHP con Apache que de alguna manera se puede considerar que “esa” es la forma en que lo hace PHP =P

    Respecto al tema del título, wordpress tiene un control y le pondría un número (lo tengo comprobado) de forma que queda así: entrada-repe y entrada-repe2. Pero precisamente para evitar eso yo le pongo fechas a las entradas: 2008/03/entrada-repe, es muy difícil que escribas dos artículos con el mismo titulo en un mismo mes… la memoria está para algo =P

  4. De todas formas, a mi me basta con hacer una query antes de insertarlo para si eso, añadir un carácter al título y que sea diferente, pero no soy monotemático y además tampoco es un sistema que vaya a vender ni a liberar (de momento) así que tampoco me importa mucho que esté eso montado.

    Muchos añaden en la propia url la id de la noticia y después el título tal que así:

    noticias/54/manual-seo

    Pero el problema de este sistema es que:

    noticias/54/manual-mamadas

    Te llevaría al mismo sitio y no es lo más adecuado 😛

    Pero vamos, en mi opinión, me atre más la idea de como lo enfoca el Apache con sus reglas, además sigue una jerarquía (bastante obvia, de arriba a abajo) por lo que puedes poner varias reglas diferentes sin complicarte mucho la cabeza.

  5. buenas,

    tengo una duda acerca de lo que comentas. En mi caso se trata de una web pequeña y que en su mayoria es directamente HTML. Solo hay un par de páginas en ASP. Si las URL quedan como http://miweb/manual-seo.html tiene el mismo efecto?

    Muchas gracias,
    Saludos.

  6. Si está hecha en html y quieres poner palabras clave en las url lo mejor es nombrar directamente los archivos con ellas, el que has puesto quedaría perfecto.

    Un saludo.

Comments are closed.