Introducción a las redirecciones 301
¿Qué es una redirección 301?
Una redirección 301 es un código de estado HTTP que indica que una página o recurso ha sido movido permanentemente a una nueva ubicación. Este tipo de redirección es crucial porque informa tanto a los navegadores como a los motores de búsqueda (como Google) que la URL antigua ya no está en uso y que todo el tráfico debe ser redirigido a la nueva dirección.
En términos simples, cuando alguien intenta acceder a una URL antigua, el servidor le responde con un mensaje que dice: "¡Esta página se mudó aquí!" y automáticamente lo lleva a la nueva ubicación. Esto asegura que los usuarios no encuentren errores 404 (página no encontrada) y que el SEO de la página antigua se transfiera a la nueva.
¿Por qué son importantes para el SEO?
El SEO (Search Engine Optimization) es fundamental para que tu sitio web aparezca en los resultados de búsqueda. Las redirecciones 301 son vitales porque:
- Preservan el "link juice" : Cuando otros sitios enlazan a tu página antigua, ese valor (llamado "link juice") se transfiere a la nueva URL gracias a la redirección 301. Esto significa que no pierdes autoridad en los motores de búsqueda.
- Evitan contenido duplicado : Si tienes dos URLs con el mismo contenido (por ejemplo,
http://ejemplo.com
y https://ejemplo.com
), Google podría penalizarte por contenido duplicado. Una redirección 301 resuelve este problema al consolidar ambas URLs en una sola. - Mejoran la experiencia del usuario : Nadie quiere ver un error 404 cuando intenta acceder a una página. Las redirecciones 301 garantizan que los usuarios siempre lleguen a donde deben ir.
Diferencias entre redirecciones 301, 302 y otras
No todas las redirecciones son iguales. Aquí te explico las principales diferencias:
Código | Nombre | Descripción |
---|
301 | Movido permanentemente | Indica que la URL antigua ya no existe y que el cambio es permanente. |
302 | Movido temporalmente | Se usa cuando el cambio es temporal (por ejemplo, durante mantenimiento). |
307 | Redirección temporal HTTP | Similar a 302, pero más moderno y específico para mantener el método HTTP. |
308 | Redirección permanente HTTP | Similar a 301, pero más moderno y específico para mantener el método HTTP. |
Meta Refresh/JavaScript | Basadas en cliente | Menos recomendadas para SEO, pero útiles en casos específicos. |
Preparación antes de implementar redirecciones
Inventario de URLs a redirigir
Antes de empezar a configurar redirecciones, necesitas saber exactamente qué páginas necesitan ser redirigidas. Esto implica:
- Listar todas las URLs antiguas : Usa herramientas como Screaming Frog , Google Search Console , o incluso un sitemap.xml para identificar todas las páginas de tu sitio.
- Identificar páginas clave : Prioriza aquellas URLs que tienen tráfico significativo, backlinks importantes o que son relevantes para tu negocio.
Ejemplo de inventario inicial:
URL Antigua | Tráfico Mensual | Backlinks | Importancia |
---|
/blog/articulo-viejo.html | 500 visitas | 10 enlaces | Alta |
/contacto.php | 200 visitas | 2 enlaces | Media |
Planificación y mapeo de redirecciones
Una vez que tienes tu lista de URLs antiguas, necesitas decidir hacia dónde redirigir cada una. Esto implica crear un "mapa" que relacione cada URL antigua con su equivalente nueva.
Ejemplo de mapeo de redirecciones:
URL Antigua | URL Nueva | Tipo de Redirección |
---|
/blog/articulo-viejo.html | /blog/articulo-nuevo | 301 |
/contacto.php | /contacto | 301 |
Consideraciones de SEO importantes
- Evita cadenas de redirecciones : Una cadena ocurre cuando una URL redirige a otra, que a su vez redirige a una tercera. Esto puede ralentizar la carga de la página y confundir a los motores de búsqueda.
- Redirige a contenido relevante : No mandes a los usuarios a la página de inicio sin motivo. Si una página antigua hablaba sobre "zapatos deportivos", redirígela a una página nueva que también trate sobre zapatos deportivos.
Redirecciones 301 en servidores Apache
Configuración mediante archivo .htaccess
El archivo .htaccess
es un archivo de configuración que se encuentra en la raíz de tu sitio web si usas un servidor Apache. Es una herramienta poderosa para gestionar redirecciones sin necesidad de modificar la configuración principal del servidor.
Sintaxis básica para redirecciones simples
Aquí tienes un ejemplo básico de cómo redirigir una página antigua a una nueva:
Redirect 301 /pagina-vieja.html https://ejemplo.com/pagina-nueva
- Explicación :
Redirect
: Indica que queremos realizar una redirección.301
: Especifica que la redirección es permanente./pagina-vieja.html
: Es la URL antigua relativa a la raíz del sitio.https://ejemplo.com/pagina-nueva
: Es la nueva URL completa.
Redirecciones con expresiones regulares
Si necesitas redirigir múltiples URLs que siguen un patrón, puedes usar expresiones regulares con RedirectMatch
:
RedirectMatch 301 ^/blog/(.*)$ https://ejemplo.com/$1
- Explicación :
^/blog/(.*)$
: Coincide con cualquier URL que comience con /blog/
y capture el resto de la ruta ((.*)
).https://ejemplo.com/$1
: Redirige a la misma ruta en el nuevo dominio. Por ejemplo, /blog/articulo-viejo
se redirige a https://ejemplo.com/articulo-viejo
.
Redirecciones de dominio completo
Si cambias de dominio, puedes redirigir todo el tráfico del dominio antiguo al nuevo:
Redirect 301 / https://nuevo-dominio.com/
- Explicación :
/
: Indica que todas las URLs del dominio antiguo serán redirigidas.https://nuevo-dominio.com/
: Es el nuevo dominio al que se redirigirá todo el tráfico.
Redirecciones 301 en servidores Nginx
Configuración en el archivo de configuración del servidor
En Nginx, las redirecciones se configuran directamente en el archivo de configuración del servidor (generalmente ubicado en /etc/nginx/sites-available/default
).
Sintaxis para redirecciones simples
Aquí tienes un ejemplo básico:
location /pagina-vieja.html { return 301 https://ejemplo.com/pagina-nueva; }
- Explicación :
location /pagina-vieja.html
: Define la URL antigua.return 301
: Indica que la redirección es permanente.https://ejemplo.com/pagina-nueva
: Es la nueva URL.
Uso de expresiones regulares en Nginx
Para redirigir múltiples URLs que siguen un patrón:
location ~ ^/categoria/(.*)$ { return 301 https://ejemplo.com/$1; }
- Explicación :
~
: Indica que estamos usando una expresión regular.^/categoria/(.*)$
: Coincide con cualquier URL que comience con /categoria/
.https://ejemplo.com/$1
: Redirige a la misma ruta en el nuevo dominio.
Redirecciones 301 a través de PHP
Uso de la función header()
PHP permite realizar redirecciones mediante la función header()
. Aquí tienes un ejemplo:
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: https://ejemplo.com/nueva-pagina"); exit(); ?>
- Explicación :
header("HTTP/1.1 301 Moved Permanently")
: Informa al navegador que la redirección es permanente.header("Location: ...")
: Especifica la nueva URL.exit();
: Asegura que el script se detenga después de la redirección.
Creación de un sistema dinámico
Si tienes muchas URLs para redirigir, puedes crear un sistema dinámico usando un array:
$redirecciones = [ "/vieja" => "/nueva", "/producto123" => "/tienda/producto123" ]; if (array_key_exists($_SERVER['REQUEST_URI'], $redirecciones)) { header("Location: " . $redirecciones[$_SERVER['REQUEST_URI']], true, 301); exit(); }
- Explicación :
$redirecciones
: Un array que mapea URLs antiguas a nuevas.$_SERVER['REQUEST_URI']
: Obtiene la URL solicitada por el usuario.header("Location: ...")
: Realiza la redirección.
Redirecciones 301 con JavaScript
Aunque no es ideal para SEO, puedes usar JavaScript para redirigir usuarios:
window.location.href = "https://ejemplo.com/nueva-pagina";
- Desventajas :
- Los bots de Google podrían no seguirla.
- Depende de que el usuario tenga JS activado.
Verificación y solución de problemas
Herramientas para comprobar redirecciones
Errores comunes
- Bucles de redirección : Asegúrate de que la URL nueva no redirija a la antigua.
- Caché : Borra la caché del navegador o usa "Modo Incógnito".
Casos de uso específicos
Migración de HTTP a HTTPS
En Apache:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Explicación :
RewriteCond %{HTTPS} off
: Verifica si la conexión no es HTTPS.RewriteRule
: Redirige todo el tráfico a HTTPS.
Mejores prácticas y consideraciones finales
- Mantén un registro : Documenta todas las redirecciones en una hoja de cálculo.
- Prueba antes de lanzar : Usa herramientas como Screaming Frog para detectar errores.
- Monitorea el impacto en SEO : Usa Google Search Console para ver cómo afectan las redirecciones.