Redirigir un directorio a otro con htaccess rewrite

Aviso

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

Instrucciones generales

  1. Crea un archivo de texto plano con nombre .htaccess, o añade las líneas de código del ejemplo que se adapte a tus necesidades en la parte superior de tu archivo .htaccess.
  2. Agrega las líneas del ejemplo apropiado para tus necesidades en el archivo .htaccess. Ten en cuenta que deberás reemplazar el texto de ejemplo con tu propia información. Es decir, deberías remplazar dominio.com con tu nombre de dominio, directorio1 con el nombre de tu directorio, archivo.html con tu nombre de archivo, etc.
  3. Use tu cliente FTP para subir el archivo .htaccess al directorio, o sub-directorio, del dominio correspondiente. Si quieres que el archivo se cargue al entrar en el dominio, deberías cargar el archivo .htaccess en la raíz del alojamiento de tu dominio, que suele ser:
    • /var/www/vhosts/dominio.com/httpdocs – En el caso de un servidor con Plesk
    • dominio.com/httpdocs – En el caso de un alojamiento compartido

Una vez cargado el archivo, la regla de reescritura (rewrite rule) debe funcionar inmediatamente.

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, deberías buscar la manera de hacer estos cambios desde el CMS que estés utilizando.

Ejemplo de archivo .htaccess

Aviso

dominio.com/httpdocs/directorio2/ debe existir y tener contenido en él para que los siguientes ejemplos funcionen.

  • Redirigir http://dominio.com/directorio1/http://dominio.com/directorio2/.

    Deberías seleccionar esta opción en el caso de no tener la misma estructura de archivos en ambos directorios:

    Options +FollowSymLinks

    RewriteEngine On

    RewriteRule ^directorio1.*$ http://dominio.com/directorio2/ [R=301,L]

  • Redirigir http://dominio.com/directorio1/archivo.htmlhttp://dominio.com/directorio2/archivo.html

    Selecciona esta opción si tu contenido está duplicado en los dos directorios:

    Options +FollowSymLinks

    RewriteEngine On

    RewriteRule RewriteRule ^directorio1/(.*)$ http://dominio/directorio2/$1 [R=301,L]

Probar los ejemplos

Crea y suba el siguiente archivo “index.html” a /directorio2 por FTP:

<html>

<body>

Mod_rewrite está funcionando :)

</body>

</html>

Entonces, si has seguido correctamente el primer ejemplo, visita http://dominio.com/directorio1/ en tu navegador, y si la regla de redirección está funcionando bien deberías ver el cambio de dirección URL a http://dominio.com/directorio2/, y el contenido de la página de prueba.

Si has seguido el segundo ejemplo, visita http://dominio.com/directorio1/index.html, y si la regla de redirección está funcionando bien deberías ser redirigido a http://dominio.com/directorio2/index.html y ver el contenido de la página de prueba.

Explicación del código

  • Options +FollowSymLinks – es una directiva de Apache, requisito previo para mod_rewrite.
  • RewriteEngine On – habilita mod_rewrite.
  • RewriteRule – define una regla particular.
    • Dentro de la regla de reescritura, la primera cadena de caracteres después de RewriteRule, define lo que la URL original parece.
    • La segunda cadena después de RewriteRule define la nueva URL.
      • $1 – Este caracter especial, coincide (y sustituye) la parte entre paréntesis, especificada en la primera cadena. Básicamente, lo que hace es asegurar que las sub-páginas redireccionan a la misma sub-página y no a la página principal. Puedes omitirlo para redirigir a la página principal. (Si no tienes el mismo contenido en el nuevo directorio que había en el antiguo directorio, deja esta expresión regular.)

      Información adicional

      Puedes encontrar más detalles sobre los caracteres especiales, conocidos como expresiones regulares, en el artículo

      Utilizar las rewrite rules en .htaccess

  • [R=301,L] – Esta opción, realiza una redirección 301, y también deshabilita que las reglas de reescritura que estén escritas después afecten a la dirección URL (una buena idea para añadir después de la última rewrite rule).

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


*