Utilizar las rewrite rules en .htaccess

Información general

Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, basado en un analizador de expresiones regulares, que utilizando el módulo de Apache mod_rewrite permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios), es decir volver a escribir las solicitudes de URL que entran en tu servidor.

Nota

Utilizado correctamente, mod_rewrite es muy poderoso. Además de las que citaremos a continuación, existen muchas otras aplicaciones para mod_rewrite. Puedes aprender otras posibilidades del rewrite, en la web apache.org.

Los archivos .htaccess, se ubican, habitualmente, en la raíz del directorio donde deben tener efecto. Una vez subido el archivo al directorio deseado, la regla de reescritura (rewrite rule) debería tener efecto inmediato al tratar de acceder desde un navegador al sitio.

Aviso

Algunos Sistemas de Gestión de Contenidos (Content Management Systems o CMS), como WordPress por ejemplo, sobrescriben los archivos .htaccess con su propia configuración. En ese caso, puede que tengas que buscar la manera de hacer estos cambios desde el panel de control del CMS que estés utilizando.

Expresiones regulares

Las rewrite rules a menudo contienen símbolos que forman una expresión regular (regex). Así es como el servidor sabe exactamente cómo desea que la dirección URL cambie.

Sin embargo, las expresiones regulares pueden ser difíciles de descifrar a primera vista. Por eso, a continuación hemos querido mostrarte algunos elementos comunes, que podrás ver en las rewrite rules facilitadas en nuestros artículos relacionados con archivos .htaccess.

  • ^ – Indica el principio de la palabra a buscar.
  • $ – Indica el final de la palabra a buscar.
    • Es decir, ^directorio1$ indicaría exactamente, directorio1.
  • . – El punto, serviría para indicar cualquier caracter menos el espacio (ejemplo: a, B, 3).
  • * – El asterisco indica, que el caracter previo, puede aparecer 0 o más veces.
    • Por ejemplo, ^uploads.*$ indicaría uploads2009uploads2010, etc.

    Consejo

    En el caso de que no se sepa la URL que van a escribir los usuarios, puede utilizar ^.*$, que indicaría todo y nada determinado.

  • () – Los paréntesis permiten agrupar y guardar una parte de la primera cadena, para su uso posterior, utilizando la variable $1 en la segunda cadena. Esto es útil para manejar peticiones a ficheros en particular que deberían ser lo mismo tanto en la antigua como la nueva versión de la URL
  • Más información

    Puedes encontrar más información sobre expresiones regulares en la página web perl.org.

Resolución general de problemas

404 Not Found

Examina la nueva URL en tu navegador detalladamente, ¿hace referencia a un archivo que existe en el servidor en la nueva ubicación especificada por la regla de reescritura?.

Es posible, que necesites revisar que la regla de reescritura resuelva desde más resultados haciéndola más amplia, o bien puede que tengas que copiar los archivos desde su ubicación original a la nueva ubicación, para que puedan mostrarse.

Si la URL es simplemente incorrecta, como http://dominio.com/directorio1//archivo.html (En este caso el error son los dos “/” en la URL) necesitarás revisar de nuevo la sintaxis del archivo .htaccess.

Aviso

Clouding.io no dará soporte de sintaxis puesto que la responsabilidad de revisarlo es del cliente.

URL infinita, tiempo de espera agotado (timeout), redirect loop

Si notas que la URL es ridículamente larga, que la página no carga, o que tu navegador te da un mensaje de error acerca de la redirección, es probable que tengas conflictos de redireción en el site.

Deberías revisar tu archivo .htaccess entero, buscando reglas de reescritura que puedan coincidir con otras reglas de reescritura. También, puede ser necesario comprobar los archivos .htaccess en los subdirectorios. Ten en cuenta que los clientes FTP no mostrarán los archivos .htaccess, a menos que hayas activado la opción de ver archivos y carpetas ocultos.

Consejo

Añadir la opción [L] después de una regla de reescritura, puede ayudar en algunos casos ya que indica al servidor que deje de intentar reescribir una URL después de que se haya aplicado esa regla.

Ejemplos prácticos de reglas de reescritura utilizando .htaccess:

Nota

Los ejemplos de los siguientes enlaces son proporcionados por cortesía – Clouding.io no configurará rewrite rules para sitios web individuales de sus clientes.

Para comentar sobre este artículo, rellena el formulario. Los campos marcados con un asterisco (*) son obligatorios.


*