¿Cómo puedo redireccionar y sobreescribir mis URL con un archivo .htaccess?

 

Crear un archivo .htaccess en tu servidor web de DreamHost

Revisa el siguiente artículo para ver instrucciones de cómo crear un archivo .htaccess en tu servidor web:

Si el archivo ya existe, ve los siguientes artículos para ver instrucciones de como actualizarlo (dependiendo si estás usando FTP o SSH):

¿Que cambiar en los ejemplos de abajo?

Los ejemplos a continuación pueden ser ingresados dentro de tu archivo de .htaccess como se muestran. Solo asegurate de ajustar el camino al archivo para que el .htaccess sepa donde está localizado. También, si ves el dominio example.com cambialo por tu nombre de dominio.

Forzar o eliminar www en la URL

Forzar www en la URL

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

Eliminar www en la URL

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule (.*) https://example.com/$1 [R=301,L]

Redireccionar todas las URL a un nuevo sitio

Los siguientes dos ejemplos redireccionan todas las URL de tu sitio web actual a un segundo sitio web. Esto es útil luego de que hayas migrado tu sitio a un nuevo nombre de dominio.

Opción #1

Redirect 301 / https://example.com/

Opción #2

En este ejemplo, tu sitio web anterior llamado example.com redireccionaría conservando todas las URL a un nuevo sitio llamado dreamhostexample.com.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule (.*)$ https://www.dreamhostexample.com/$1 [R=301,L]
</IfModule>

Redireccionar una URL

Usando una redirección en un archivo .htaccess puedes redireccionar a los usuarios de una vieja página a una nueva sin tener que mantener la vieja página. Por ejemplo, si usas index.html como tu archivo index y luego renombras index.html a home.html, puedes hacer una redirección para enviar a los usuarios del index.html a home.html. Por ejemplo:

Redireccionar a un archivo del sitio local

Redirect /camino/al/viejo/archivo/viejo.html /camino/al/nuevo/archivo/nuevo.html

Redireccionar a un archivo de un sitio externo

Redirect /camino/al/viejo/archivo/viejo.html https://www.example.com/nuevo/archivo/nuevo.html

El primer camino

El primer camino al viejo archivo tiene que ser un camino local UNIX, NO el camino completo. Entonces, si tu archivo .htaccess está en el directorio/example.com, no incluyas /home/username/example.com en el camino local UNIX. El primer / representa el directorio example.com. Si el archivo viejo estaba en este directorio, seguirás el / con el nombre del viejo archivo.

El segundo camino

El segundo camino al nuevo archivo puede ser un camino local UNIX, pero también ser una URL completa enlazada a una página de un servidor diferente o el mismo servidor.

Ejemplos de redirecciones

Redireccionar de un directorio a un archivo HTML

RedirectMatch 301 ^/blog/about /blog/about.html

Redireccionar de un archivo index.html a un directorio diferente

Redirect /index.html /new/

Redireccionar de index.html a default.html

Redirect /index.html /default.html

Redireccionar de un directorio local /privado a otro directorio privado del sitio

Redirect /private/ https://www.example.com/private/

Cargar un archivo .gif de un sitio diferente

Asegúrate que el otro sitio sea tuyo. Nunca hagas redirecciones de imágenes (hotlinks) de otros sitios web.

Redirect /img/logo.gif https://www.example.com/images/logo.gif

Usar Expresiones Regulares

Si quieres usar una Expresión Regular para redirigir algo, usa la directríz RedirectMatch:

RedirectMatch "^/oldfile\.html/?$" "https://example.com/newfile.php"

Redirigir mensajes de error

Puedes también redirigir errores 404. En vez de lanzar una página 404, este redirecciona a la página principal del sitio.

ErrorDocument 404 https://example.com/

Redirigir un directorio viejo a un nuevo directorio

Estos archivos redirigen de un directorio viejo (/blog/archivados) a un nuevo directorio (/archivados). Este archivo debe existir en el nuevo directorio para que funcione.

RewriteRule ^blog/archives/(.*)$ /newarchives/$1 [R=301,NC,L]

Redireccionar un directorio antiguo al directorio de inicio

Esto redirige los archivos en un directorio antiguo (/blog/archives) al directorio de inicio o home.

  • Si agregas un archivo específico (example.com/blog/archives/test.html) al final, este debe existir en el directorio de inicio para cargar.
  • Si solo el subdirectorio esvisitado, el directorio de inicio carga. Si agregaste un archivo index (como index.html), cargará.
RewriteRule ^blog/archives/(.*)$ /$1 [R=301,NC,L]

Redireccionar páginas no existentes a index.php

Si un visitante intenta acceder a un página que no existe, se les presentará un error 404. Tu puedes en vez de eso redirigir cualquier requerimiento a una página no existente a tu archivo index.php (o cualquier archivo index) agregando el siguiente código a tu .htaccess:

Options +SymLinksIfOwnerMatch 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Si tu página no es index.php, solo cambia la última línea a tu archivo index. Luego el visitante será redirigido de vuelta a tu página principal.

Cargar un subdirectorio automáticamente

Este ejemplo redirige la URL del dominio ROOT a cualquier subdirectorio. En este ejemplo, éste automáticamente carga example.com/subdir1:

RewriteEngine on
RewriteRule ^$ /subdir1/ [L]

Sobrescribir una URL

Este ejemplo reescribe una URL a otra URL. Este ejemplo de sobreescritura example.com/1.html a example.com/abc.php?id=1.

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([0-9]+).html /abc.php?id=$1 [QSA,L]

Lo siguiente explica las reglas de arriba:

([0-9]+)
Permite cualquier dígito, y solamente cualquier dígito 1 o más veces.
([a-z-]*)
Permite cualquier letra minúscula, más "-" por separación de palabra, 0 o más veces. Si quieres que soporte mayúsculas también, usa ([a-zA-Z-]*). Por ejemplo:
RewriteRule ^place/([a-zA-Z-]*).html /place/abc.php?id=$1 [QSA,L]
[QSA,L]
Agrega esto a tu línea de query del script interno, y hará que la última regla sea ejecutada.

Después de usar este método, puedes abrir la página con cualquier tipo de dirección. Ésto es útil para retro equipar un sitio web que no fué diseñado con una mentalidad de mod_rewrite. Esto es bueno por que no destruye ningún favorito guardado en los computadores de los usuarios.

Revisa el siguiente enlace para más información y ejemplos sobre mod_rewrite:

Sobrescribir enlaces no existentes a index.php

Lo siguiente redirige todos los enlaces o carpetas que no existen a index.php. Sin embargo, si el archivo o directorio existe, este carga normalmente:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Redirigir HTTP o HTTPS de tu sitio

Mira el siguiente artículo para ver instrucciones de como forzar tu sitio a cargar con HTTPS:

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?