En el contexto del SEO, una redirección se refiere al proceso de enviar a los usuarios y a los motores de búsqueda desde una URL específica a otra. Esto se hace por diversas razones, como cambios en la estructura del sitio web, actualizaciones de contenido o correcciones de errores, como los 404.
Supón que quieres mover una página de tu sitio web, un directorio o todo el dominio. Una redirección 301 reenvía automáticamente a los visitantes que llegan a través de la antigua dirección a la nueva.
Con esto los usuarios no sufren el problema de llegar a una página que no existe (el error 404). Además ayuda a que los buscadores como Google mantengan sus índices actualizados y sin estos errores.
Las redirecciones 301 son útiles cuando:
Aquí hay algunos tipos comunes de redirecciones:
Implementar una redirección 301 es un proceso sencillo que solo requiere modificar un archivo en el servidor llamado .htaccess, introduciendo las instrucciones adecuadas.
El archivo .htaccess gestiona la configuración del servidor y se ubica en el directorio raíz de tu sitio web. Este archivo se carga automáticamente antes de que cualquier página web se muestre a los usuarios o a los motores de búsqueda.
Para aplicar redirecciones 301 mediante el archivo .htaccess, realiza los siguientes pasos:
En el proceso de redireccionamiento, te puedes topar con diversas circunstancias, cada una con su propia solución.
Exploraremos diferentes escenarios de redireccionamiento:
Detallemos cada caso:
Si deseas trasladar una página de una URL antigua a una nueva, este proceso es bastante directo. Es una práctica habitual para:
Para realizar esta redirección:
Redirect 301 /old-page http://www.example.com/new-page
Nota que la URL antigua no incluye el dominio, pero la nueva sí. Esta forma te permite mover páginas tanto dentro de tu dominio como hacia otros.
Para redirigir la página de inicio hacia otra interna o a un dominio diferente:
RedirectMatch 301 ^/$ http://www.example.com/new-page
Si quieres cambiar el nombre de un directorio manteniendo su estructura interna:
Redirect 301 /old-directory/ http://www.example.com/new-directory/
Puedes redireccionar subdirectorios especificando su ruta completa:
Redirect 301 /directory/old-subdirectory/ http://www.example.com/directory/new-subdirectory/
Para complicar las cosas, redirigir un directorio a un subdirectorio más profundo sería así:
Redirect 301 /directory/subdirectory/ http://www.example.com/directory/new-subdirectory/subdirectory/
Si decides eliminar un directorio con todo su contenido:
RedirectMatch 301 ^/old-directory/(.*)$ http://www.example.com/new-page
Cambiar completamente de dominio manteniendo la estructura de URLs es posible con:
Redirect 301 / http://www.newdomain.com/
Para redireccionar todo el contenido de un dominio antiguo a la página principal del nuevo:
RedirectMatch 301 (.*) http://www.newdomain.com/
Recuerda mantener el dominio antiguo y su hosting para conservar las redirecciones.
Para redirigir la IP de tu servidor hacia tu dominio, evitando duplicidades en los motores de búsqueda:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^198\.51\.100\.24
RewriteRule (.*) http://www.example.com/$1 [R=301,L,QSA]
</IfModule>
Evita duplicidades redirigiendo de una versión sin www a una con www, o al revés:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L,QSA]
</IfModule>
Y para WWW a no-www:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L,QSA]
</IfModule>
Para asegurar que tu sitio siempre use HTTPS:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L,QSA]
</IfModule>
Y para volver a HTTP:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} on
RewriteRule (.*) http://www.example.com/$1 [R=301,L,QSA]
</IfModule>
Redireccionar la barra final (/)
Para unificar el acceso a tus páginas con o sin barra final:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.example.com/$1/ [R=301,L,QSA]
</IfModule>
Y para remover la barra:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ http://www.example.com/$1 [R=301,L,QSA]
</IfModule>