Redirección 301 y 302: diferencias, 307, 308, cadenas y SEO

El código que eliges al mover una URL decide qué dirección conservan los buscadores. Te explicamos en qué se diferencian 301, 302, 307 y 308, por qué aparecen cadenas y bucles y cómo revisar una redirección salto a salto.

10 min de lectura ToolsBasic
Redirección 301 y 302: diferencias, 307, 308, cadenas y SEO

Una redirección 301 indica que una URL se ha mudado de forma permanente; una 302, que el cambio es temporal. El visitante llega a la página nueva en ambos casos, pero buscadores y cachés no los tratan igual: con la permanente, Google pasa a indexar la dirección nueva y le traslada las señales; con la temporal, tiende a conservar la antigua. Los códigos 307 y 308 son las versiones temporal y permanente que garantizan que el método de la petición, por ejemplo POST, no cambia por el camino.

Para ver qué códigos devuelve de verdad una dirección y cuántos saltos da, pásala por la herramienta para comprobar redirecciones. Al diseñar las URL nuevas, el generador de slug convierte títulos con tildes y eñes en rutas limpias. El codificador y decodificador de URL vuelve legibles las direcciones antiguas llenas de secuencias como %C3%B1, y comparar textos te deja revisar línea a línea dos versiones del mapa de redirecciones antes de publicarlo.

Los códigos de redirección, uno por uno

El significado de los códigos de estado está definido hoy en el RFC 9110 (HTTP Semantics, 2022). Cinco códigos de la familia 3xx cubren casi todos los casos reales:

CódigoNombre¿Permanente?¿Conserva el método?Uso habitual
301Moved PermanentlySíNo está garantizado; un POST puede pasar a GETCambio de dominio o de estructura de URL
302FoundNoNo está garantizadoPromociones cortas, páginas de mantenimiento
303See OtherNoSiempre pasa a GETPágina de resultado tras enviar un formulario
307Temporary RedirectNoSíEndpoint de API movido por un tiempo
308Permanent RedirectSíSíEndpoint de API o formulario movido para siempre

La columna del método tiene una explicación histórica. En la época de HTTP/1.0, muchos navegadores repetían un POST como GET al recibir un 301 o un 302, y la especificación acabó aceptando ese comportamiento. El 307 llegó con HTTP/1.1 y el 308 con el RFC 7538 precisamente para exigir que método y cuerpo se mantengan. En la navegación normal, que usa GET, 301 y 308 se comportan igual.

Cuándo usar una redirección 301

Si la dirección antigua no va a volver, la respuesta es casi siempre una redirección permanente. Los casos típicos:

  • Cambio de dominio: cada página del dominio viejo apunta a su equivalente en el nuevo.
  • Paso de HTTP a HTTPS y elección definitiva entre la versión con www y la versión sin www.
  • Nueva estructura de URL: por ejemplo, de /producto.php?id=42 a /productos/termo-de-acero.
  • Fusión de contenidos: dos artículos flojos sobre el mismo tema reunidos en uno más completo.

Lo importante es que cada URL antigua apunte a su equivalente más cercano. Mandar cientos de páginas eliminadas a la portada parece cómodo, pero Google puede tratar esas redirecciones como soft 404: ignora la página y no traslada nada. Si una página no tiene sustituto real, un 404 o un 410 honesto es mejor respuesta.

El lugar de la 302 y la 307

Las redirecciones temporales son para casos en los que la URL original volverá: unos días de mantenimiento, un producto agotado que envía al visitante a su categoría o un test A/B que reparte tráfico entre variantes. Las portadas que eligen idioma o país para cada visitante también suelen usar 302, porque el destino cambia de una persona a otra.

El error frecuente va en sentido contrario: hacer una mudanza definitiva con una 302 porque es lo que el plugin o el framework envía por defecto. Google puede acabar tratando como permanente una 302 que lleva mucho tiempo sin cambiar, pero es un proceso opaco que no controlas. Si tu intención es permanente, envía un código permanente.

La 308 en APIs y formularios

Si mueves para siempre un endpoint de API o el destino de un formulario, usa 308. Un POST que recibe un 301 puede convertirse en GET en algunos clientes: el cuerpo se pierde y el servidor recibe una petición vacía. En los registros aparece como datos que nunca llegan, y depurarlo es un suplicio. Con mudanzas temporales pasa lo mismo: para todo lo que no sea una simple visita a una página, mejor 307 que 302.

Qué pasa con el SEO en una redirección 301

La documentación de Google sobre redirecciones describe las permanentes (301 y 308) como una señal fuerte de que el destino debe ser la URL canónica, y las temporales (302 y 307) como una señal débil. En la práctica, tras una permanente la dirección nueva sustituye a la antigua en los resultados; tras una temporal, la antigua puede seguir apareciendo. Google lleva años diciendo que las redirecciones 3xx no pierden PageRank. Las pérdidas reales vienen de redirigir a páginas que no tienen relación y de las cadenas largas.

Una lista de pasos que funciona en una migración real:

  1. Prepara un mapa uno a uno de URL antiguas y nuevas, con una pareja por línea.
  2. Configura cada redirección en el servidor, como un único salto directo al destino final.
  3. Actualiza los enlaces internos, el sitemap XML y las etiquetas canonical con las URL nuevas, sin fiarlo todo a las redirecciones.
  4. Mantén las redirecciones al menos un año, que es lo que recomienda la guía de Google para mudanzas de sitio. Más tiempo no perjudica si otras webs siguen enlazando las direcciones antiguas.
  5. Vigila durante las semanas siguientes los informes de indexación y rastreo de Search Console.

Cadenas y bucles de redirecciones

Una cadena es cualquier recorrido que necesita más de un salto para llegar a la página final. El ejemplo clásico se forma con reglas añadidas a lo largo de los años por personas distintas:

SaltoPeticiónRespuesta
1HTTP, tienda.example/ofertas301 hacia la versión HTTPS
2HTTPS, tienda.example/ofertas301 hacia www.tienda.example/ofertas
3HTTPS, www.tienda.example/ofertas302 hacia la versión con barra final
4HTTPS, www.tienda.example/ofertas/200 OK

Cada salto es una petición y una respuesta completas, y si cambia el nombre de host puede haber además una consulta DNS y un saludo TLS nuevos. En una conexión móvil lenta, cada uno puede sumar decenas o cientos de milisegundos antes de que la página empiece a cargar. Según la documentación de Google, Googlebot sigue como máximo 10 saltos; más allá, la página puede quedarse sin rastrear. Fíjate también en el salto 3: una sola 302 en medio de una cadena permanente enturbia la señal de todo el recorrido.

Bucles y el error ERR_TOO_MANY_REDIRECTS

En un bucle la cadena no termina nunca: A apunta a B y B vuelve a apuntar a A. Chrome se detiene con ERR_TOO_MANY_REDIRECTS y Firefox avisa de que la página no está redirigiendo correctamente. Las causas habituales:

  • Una CDN o un proxy inverso se conecta al servidor de origen por HTTP mientras la aplicación manda cada petición HTTP a HTTPS. El origen siempre ve HTTP, así que la regla se repite sin fin.
  • Una regla del servidor quita el www y un ajuste del CMS lo vuelve a poner.
  • Una portada de idioma o de consentimiento redirige según una cookie que nunca consigue guardar.

Cómo dejar una cadena en un solo salto

  1. Comprueba la URL inicial con la herramienta y anota el código y el destino de cada salto.
  2. Localiza la URL que finalmente devuelve 200: ese es el destino real.
  3. Reescribe las reglas para que la primera petición vaya directa allí, por ejemplo uniendo en una sola las reglas de HTTPS y de www.
  4. Haz que los enlaces internos apunten a la URL final, nunca a una intermedia.
  5. Vuelve a comprobar tras publicar y prueba en una ventana privada, para que un 301 guardado en la caché de tu navegador no te engañe.

Cómo comprobar una cadena de redirecciones

El navegador sigue las redirecciones en silencio y solo te enseña dónde has acabado. Para ver el recorrido hace falta algo que lo camine salto a salto. Saber cómo funciona la herramienta de este sitio te ayuda a interpretar bien lo que muestra:

  • Quien visita la URL es el servidor del sitio, no tu navegador, y lista en orden el código de estado y el destino de cada salto.
  • Sigue como máximo 10 redirecciones; una cadena más larga termina en un error en lugar de un resultado.
  • Solo acepta direcciones públicas http y https. Los puertos distintos de 80, 443, 8080 y 8443, las redes privadas, localhost y las direcciones de metadatos de la nube están bloqueados por seguridad.
  • Nunca descarga el cuerpo de la página, de modo que las etiquetas meta refresh y las redirecciones por JavaScript no aparecen; solo se ven las que el servidor envía como respuesta 3xx.
  • Hay un límite de 15 comprobaciones por minuto.

Como la petición sale desde la ubicación del servidor, sin tus cookies ni tu sesión, las webs que redirigen según el país, el idioma o el inicio de sesión pueden mostrar una cadena distinta de la que ves en tu navegador. No es un fallo de ninguna de las dos partes: el sitio está tratando de forma diferente a dos visitantes.

Desde la terminal y las herramientas del navegador

En una terminal, curl -sIL tienda.example imprime las cabeceras de cada salto; -I pide solo cabeceras y -L sigue las redirecciones. Algunos servidores responden de otra manera a las peticiones que solo piden cabeceras, así que si algo te extraña, compáralo con una petición normal. En el navegador, abre el panel Red de las herramientas para desarrolladores, marca Preserve log (conservar registro) y recarga. Si ves una línea 307 Internal Redirect, es el propio navegador pasando a HTTPS por una política HSTS; el servidor nunca envió ese 307.

Cómo escribir la regla en el servidor

En Apache, una página suelta necesita una línea: Redirect 301 /termo-viejo /productos/termo-de-acero. En nginx, lo equivalente es location = /termo-viejo { return 301 /productos/termo-de-acero; }. El estándar permite una ruta relativa en la cabecera Location, que se resuelve respecto a la URL actual. Elegir slugs cortos, en minúsculas y sin tildes que no vayas a querer cambiar es la forma más barata de no tener que escribir otra regla el año que viene.

Preguntas frecuentes

¿Cuánto tiempo hay que mantener una redirección 301?

La guía de Google para mudanzas de sitio habla de un año como mínimo. Si otras webs siguen enlazando las URL antiguas, mantén las reglas indefinidamente: una redirección apenas cuesta nada al servidor y quitarla tira a la basura lo que valían esos enlaces.

Usé una 302 para un cambio definitivo, ¿qué hago?

Los buscadores pueden mantener la URL antigua indexada más tiempo y mostrar la nueva con retraso. Basta con cambiar el código a 301; no hay nada más que deshacer. Después, vuelve a comprobar la cadena.

¿Por qué mi navegador sigue una redirección que ya quité?

Las redirecciones permanentes se pueden guardar en caché y los navegadores lo hacen con bastante insistencia. Si publicaste un 301 equivocado y lo corregiste, tu navegador puede seguir obedeciendo al antiguo. Prueba en una ventana privada o vacía la caché.

¿Sirve una meta refresh o una redirección por JavaScript en lugar de un 301?

Google puede seguir ambas, pero la redirección del servidor es la señal más clara y fiable. Además, como viven dentro del cuerpo de la página, no aparecen en las herramientas que solo leen cabeceras.

Las migraciones grandes suelen gestionarse en una hoja de cálculo con URL antiguas y nuevas; CSV y JSON: diferencias explica las trampas de comillas y separadores al exportar ese mapa. Para el resto de factores que retrasan una página antes de mostrarse, consulta qué es minificar código y optimización de imágenes para SEO.

Herramientas relacionadas

Catálogo

Artículos del blog