Canonicalizacion con ASP

El otro día escribí sobre cómo canonicalizar los dominios con PHP. Ahora toca hacer lo mismo con ASP. De hecho, este código ASP puede ser mucho más práctico que el de PHP ya que no se puede hacer la redirección canónica en un servidor Windows de otra manera si el servidor no tiene instalado ISAPI_REWRITE. Así que este trozo de código puede resultar muy útil si tienes tu web alojada en un servidor Windows.

Para obtener la redirección canónica con ASP, copia el siguiente código e insértalo en el fichero antes de cualquier otro código ASP o HTML. ¡Que no se te olvide cambiar el nombre del dominio! ;)

<%
the_host = Request.ServerVariables("HTTP_HOST")
the_path = Request.ServerVariables("PATH_INFO")
the_query = Request.ServerVariables("QUERY_STRING")

if the_host <> “www.ejemplo.com” then
the_location = “http://www.ejemplo.com”

if the_path <> “/index.asp” then
the_location = the_location & the_path
end if

if the_query <> “” then
the_location = the_location & “?” & the_query
end if

Response.Status = “301 Moved Permanently”
Response.AddHeader “Location”, the_location
Response.End
end if
%>

Compartir este artículo:
  • del.icio.us
  • Google Bookmarks
  • Meneame
  • Technorati
  • BlogMemes Sp
DavidM
Acerca de DavidM
DavidM lleva trabajando en los campos del marketing por Internet y el posicionamiento en buscadores desde el año 2004. Puede ver su biografía aquí.

6 comentarios para el post “Canonicalizacion con ASP”

  1. Comentario de sara el 23 de Octubre de 2008 a las 11:22

    He visto que en las herramientas para webmasters de Google (panel > menú izquierda > Herramientas > Establecer dominio preferido) existe la posibilidad de definir si el dominio se mostrará como www .midominio.com o midominio.com en su índice.

  2. Comentario de sara el 5 de Diciembre de 2008 a las 12:36

    ¡Por fin canonicalización total! Este código está en ASP VBScript y lo canonicaliza todo, jejeje.

    - Canonicaliza el host: de www .example.com/loquesa a example.com/loquesea y viceversa.
    - Canonicaliza el path: de host/loquesea/index.asp y host/loquesea/default.asp a host/loquesa/. Por supuesto también de host/index.asp y host/default.asp a host/


    < %
    target_host = "www .example.com" ' www .example.com or example.com
    bredirect = false
    the_host = Request.ServerVariables("HTTP_HOST")
    the_path = Request.ServerVariables("PATH_INFO")
    the_query = Request.ServerVariables("QUERY_STRING")

    ' Checking host
    if the_host <> target_host then
        the_location = target_host
        bredirect = true
    else
        the_location = the_host
    end if

    ' Checking path
    if (Right(the_path,10) = "/index.asp" AND the_query = "") then
        the_location = the_location & Left(the_path, Len(the_path)-9)
        bredirect = true
    elseif (Right(the_path,12) = "/default.asp" AND the_query = "") then
        the_location = the_location & Left (the_path, Len(the_path)-11)
        bredirect = true
    else
        the_location = the_location & the_path & the_query
    end if

    ' Redirect
    if bredirect = true then
        Response.Status = "301 Moved Permanently"
        Response.AddHeader "Location", the_location
        Response.End
    end if
    %>

  3. Comentario de luisvasquez el 7 de Diciembre de 2008 a las 15:42

    Hola…gracias por el código…

    Ahora tengo una pregunta ¿debe ser incluido al principio de CADA página o sólo al principio de la página principal (default.asp o index.asp)?

    Les pregunto esto porque google tiene 5.000 urls indexadas de mi web y la misma sólo tiene algo como 2.000, lo cual indica que hay duplicación. A pesar de tener un pagerank de 3/10 y tener esa cantidad de urls indexadas aun no logro aparecer ni siquiera en las 5 primeras páginas para términos relacionados con el tema de mi web.

    Saludos y muchas gracias,
    Luis Vásquez

  4. Comentario de luisvasquez el 7 de Diciembre de 2008 a las 16:05

    Hola de nuevo,

    Acabo de probar y no me funciona el original. Le hice un par de cambios y ahora, al parecer ya funciona:

    Cambios:

    - En la línea 1 tiene un espacio entre www y .example

    - En una de las últimas líneas tuve que cambiar

    Response.AddHeader “Location”, the_location por

    Response.AddHeader “Location”, “http://”&the_location

    Por favor corrijanme si lo que hice no está bien.

    Saludos,
    Luis Vásquez

  5. Comentario de sara el 9 de Diciembre de 2008 a las 09:35

    Hola Luis!
    Lo de dejar un espacio en la URL es para que WordPress no detecte que es un enlace, así que efectivamente debes cambiar w ww.example.com por tu dominio sin espacios.
    Tienes razón, falta el “http://”, muchas gracias. :)
    Debes poner el código en todas tus páginas ya que este código no sólo te sirve para las páginas tipo index.asp o default.asp sino que también canonicaliza el dominio. Por ejemplo, de http: //posicionapro.com a http: //www.posicionapro.com/. David lo explica aquí: Canonicalizacion. Lo suyo es que incluyas el código dentro de un include que tenga todas las páginas.

    Un saludo!

  6. Comentario de sara el 9 de Diciembre de 2008 a las 11:36

    Hola a tod@s!
    Es posible que en muchas ocasiones el código para eliminar index.asp o default.asp no funcione ya que el servidor no devuelve la variable Request.ServerVariables(”PATH_INFO”) correctamente. Es decir, que incluye index.asp o default.asp esté o no en el URL cayendo de esta manera en un bucle infinito de redirecciones. ¡Cada día me gusta menos ASP!

Escribe un comentario

Entradas realcionadas

  1. Canonicalizacion con PHP
  2. Canonicalizacion
  3. Como quitar la barra final de las URLs con htaccess y mod_rewrite