¿Como puedo redireccionar y sobreescribir mis URL con un archivo .htaccess?

Crear un archivo .htaccess en tu servidor web de DreamHost

Ve 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 “ejemplo.com” cambialo por tu nombre de dominio.

Redireccionar todas las URL

La siguiente línea redirecciona todas las URL en tu sitio a un nuevo sitio.

Redirect 301 / https://example.com/

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 http://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/usuarioejemplo/example.com en el camino local UNIX. El primer / representa el directorio dominio.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/ http://www.example.com/private/

Cargar un archivo .gif de un sitio diferente

Asegúrate que el otro sitio sea tuyo. Nunca hagas enlaces calientes de otros sitios web.

Redirect /img/logo.gif http://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/?$" "http://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 http://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 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]

Forzar www en una URL

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

Eliminar www en la URL

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

Sobrescribir una URL

Este ejemplo sobrescribe 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.

Vé el siguiente link para más información y ejemplos sobre mod_rewrite:

Sobrescribit link no existentes a index.php

Lo siguiente redirige todos los links o carpetas que no existen a index.php. Sin embargo, si el archivo o directorio existe, éste 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 para tu sitio

Ve 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.