mod_rewrite en IIS con página 404 o ISAPI_Rewrite 3

ASP con IIS, hacer url amigableCuando afrontamos proyectos en calidad de consultor SEO nos tenemos que adaptar al lenguaje de programación y las características técnicas del sitio que vamos a optimizar para buscadores. También es bastante común que parte de un informe SEO lleve algún proceso de limpieza de url (conseguir urls amigables), trabajo que habitualmente se hace con .htaccess y mod_rewrite.

En los últimos años es común encontrarse con sitios que usan Apache, PHP y algún CMS, pero no podemos olvidar que otros sitios con muchos más años disponen de otras características y también necesitan un correcto posicionamiento web  en buscadores.

Actualmente estoy a cargo de un proyecto SEO con el que se pretende posicionar un banco de imágenes de Extremadura, pero con vistas a convertirse en una galería fotográfica a nivel nacional. El sitio en concreto esta funcionando con ASP. IIS y Access como base de datos. Tiene bastantes problemas de indexación pese a los casi 20000 enlaces entrantes que ha ido acomulando durante 7 años. Solo posiciona por el nombre de dominio y está perdiendo muchísimo tráfico de otras keywords que seguro que le vamos a sacar cuando lo arreglemos.

El primer problema que tengo que resolver es el de limpiar las url pero claro en IIS no existe el maravilloso .htaccess, aunque si existe una versión similar de pago llamada ISAPI_Rewrite, lamentablemente no es libres y siempre prefiero usar otras soluciones.

Actualización: os dejo unos consejos muy buenos para posicionar web en ASP

[-] Indice de contenidos
  • Url amigables en ASP con IIS
  • Método para limpiar urls en IIS con ASP usando la página 404
  • Server.Transfer no admite parametros en las url
  • Url amigables en ASP con IIS

    Para que se entienda mejor os voy a mostrar como son las url actualmente:

    • …./buscar=xxx, donde xxx corresponde al número de una categoría, por ejemplo badajoz
    • Me gustaría convertir esa url en algo como: …./banco-imagenes/fotos-badajoz
    • Estás url que muestro son sólo para categorías del banco de imégenes también tenenemos: fichas de fotos, noticias y fotos físicas  con las que voy a hacer un jugoso sitemap de imágenes.
    • Por fortuna en la base de datos disponemos de descripciones sobre aproximadamente el 60% de las fotografías más un diccionario de categorías y etiquetas con el que voy a sacar un buen conjunto de urls limpias y un pedazo de sitemap de imágenes.

    Método para limpiar urls en IIS con ASP usando la página 404

    Después de tanto rollo os voy a contar el proceso principal para hacer esto:

    • Tenemos que mandar los distintos tipos de errores 404 a un fichero preparado a aparte (404.asp)
    • Usando ASP capturamos la url que nos ha llegado y mostramos la queremos que vea el usuario o buscador.

    Ejemplo mod_rewrite con IIS y ASP

    • Primero capturamos la url: url = Request.ServerVariables(«QUERY_STRING»)
    • Ahora tenemos que obtener los datos apropiados de la url (esto depende de lo que busquemos).
    • Luego con esos datos deberiamos encontrar los id apropiados en la base de datos, pero aquí surge un problema, server.transfer no admite el paso de parámetros.
    • Para terminar presentariamos la página correcta usanso:server.transfer «…»

    Server.Transfer no admite parametros en las url

    El método Server.Transfer de ASP funciona perfectamente tal como su propio nombre indica, transfiriendo la página solicitada, bajo la url de llegada, pero tiene el problema de no admitir parámetros, es decir, no se puede poner Server.Transfer «cat?=3». Con lo cual no nos sirve para el ejemplo en cuestión.

    Por eso he decido usar ISAPI_Rewrite 3 Lite que es gratuita aunque reducida, estoy ahora mismo usando la herramienta y en unos días seguiré contando como me va, por cierto se puede descargar aquí: ISAPI_Rewrite 3 Lite para url limpias en ASP


    SEO Freelance


    11 comentarios en “mod_rewrite en IIS con página 404 o ISAPI_Rewrite 3

    1. Hola, el IIS 7 a mi no me funciona el Request.ServerVariables(“QUERY_STRING”) me puedes decir como lo has echo, ya que con iss 6 no hay problema para las amigables y un 404.asp preparado.

      Gracias

    2. Esta entrada esta escrita para un iss6, pero preferí solucionarlo así que con el 404.

      Quizás algún lector del blog pueda ayudarte, desde aquí invito a quien lo sepa a hacerlo.

    3. Hola
      Me ocurre algo similar a extremeño, tambien problemas en reproduccion IIS6 pero preferiria omitir el 404.
      La web es htt://www.alaveses.net
      Un saludo

    4. Hola de nuevo, con el IIS 6, no hay problema, lo tengo solucionado, con el Server.Transfer tal como dices no admite parametros por get, podeis meterlos en variables de session y listo, mi problema es con el IIS 7, que no hay medio (no se como hacerlo) de que capture la pagina de error 404.asp y la ejecute como tal, ya que si, mostrarla la muestra… pero estaticamente.

    5. parece ser que he conseguido que el iis7 haga lo que quiero

      en el path ha de indicarse la direccion padre del la pagina de error, en el localhost seria la carpeta o la aplicacion y la web, en el servidor web la carpeta wwwroot

    6. Amigo la verdad te agradezco muchos estos comentarios porque ando un poco desactualizado de IIS (hoy en día casi todos los clientes que llegan son apache y los que tienen otros server normalmente tienen equipo de administración).

      Espero… bueno no estoy seguro que lo vas a resolver con tu insistencia ;)

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.