Redirigir un archivo 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

El directorio /directorio1 debe ser único en la URL. Es decir que por ejemplo, la redirección no funcionaría si existiera el archivo “directorio1.html” como en la siguiente URL: http://dominio.com/directorio1/directorio1.html.

También, para que funcione la regla, el directorio directorio1 debe existir y tener contenido en el.

El siguiente archivo .htaccess de ejemplo, redirigirá http://dominio.com/archivo.html a http://dominio.com/directorio1/archivo.html:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} dominio.com$ [NC]

RewriteCond %{HTTP_HOST} !directorio1

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

Probar los ejemplos

Crea y sube el siguiente archivo “index.html” a /directorio1 a través de FTP:

<html>

<body>

Mod_rewrite está funcionando :)

</body>

</html>

Entonces, si has seguido el ejemplo correctamente, al visitar http://dominio.com/ en tu navegador, deberías ver el cambio de dirección a http://dominio.com/directorio1/, y 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.
  • RewriteCond %{HTTP_HOST} – sirve para indicar que direcciones URL queremos que vayan, y que no vayan, a través de la regla especificada
    • En el primer caso queremos que la regla funcione con dominio.com
      • [NC] – hace que la regla funcione con las dos versiones mayúscula y minúscula de la URL.
    • ! – significa “no”, y se utiliza para que la regla no funcione, en este caso, con directorio1. Esto lo especificamos, porque no queremos reescribir una URL, que ya incluya directorio1, porque seguiría tratando de añadir directorio1 a la URL, y se convertiría en una URL infinita.
  • 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, sustituye (o indica) 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 existe el mismo contenido en el nuevo directorio que había en el antiguo directorio, deje 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.


*