Las redirecciones 301 son la respuesta con la que un servidor indica que una URL se ha movido de forma permanente a otra dirección. El navegador lleva al visitante a la URL nueva sin que haga nada, y Google lo interpreta como una señal fuerte de que esa URL nueva es la que debe mostrar en los resultados, consolidando en ella las señales de la antigua. Se usan al cambiar una URL, unificar páginas duplicadas o cambiar de dominio.
Bien hechas, nadie las nota. Mal hechas (cadenas de varios saltos, bucles, todo enviado a la página de inicio) son una de las causas más habituales de pérdida de tráfico tras tocar una web. Aquí tienes el criterio y el código, listo para copiar.

Qué es una redirección 301
Cuando alguien pide una página, el servidor responde con un código de estado. El 200 significa «aquí la tienes»; el 404, «no existe»; el 301, «se ha movido definitivamente, está en esta otra dirección». Esa dirección viaja en la cabecera Location de la respuesta.
| Código | 301 Moved Permanently |
|---|---|
| Tipo | Permanente, en el servidor |
| Dónde se configura | Servidor (.htaccess en Apache, configuración de Nginx) o gestor de contenidos |
| Cuánto mantenerla | Un año como mínimo; lo ideal, indefinidamente |
| Lo ideal | Un solo salto, de la URL antigua a la definitiva |
Tiene tres efectos: el visitante que llega por un enlace o un favorito antiguo no ve un error, los enlaces que otras webs te pusieron siguen sirviendo, y Google sustituye progresivamente la URL antigua por la nueva en sus resultados.
Cuándo usar una redirección 301 y cuándo no
Úsala cuando el cambio es definitivo:
- Cambias la URL de una página (de
/servicios-2019/a/servicios/). - Unificas dos páginas que competían por lo mismo en una sola.
- Pasas de
httpahttps, o eliges entre la versión conwwwy sinwww. - Eliminas un producto o servicio que tiene un sustituto claro.
- Cambias de dominio o rehaces la web con otra estructura. Eso ya es un proyecto con más pasos: el plan completo está en el post sobre migración SEO.
No la uses cuando:
- No hay página equivalente. Si retiras un contenido sin sustituto, lo correcto es un 404 o un 410. Redirigirlo todo a la página de inicio no conserva nada: Google puede tratar esas redirecciones como un error 404 encubierto (soft 404) y el visitante acaba donde no esperaba.
- El cambio es temporal (una promoción, una página en mantenimiento): ahí toca un 302.
- Las dos URL tienen que seguir accesibles, como una versión filtrada de una categoría: para eso está la etiqueta
canonical.
301 vs 302 y otros códigos
| Código | Significado | Qué hace Google | Úsalo para |
|---|---|---|---|
| 301 | Movida permanentemente | Señal fuerte de que la URL de destino es la canónica | Cambios definitivos de URL o de dominio |
| 308 | Redirección permanente | Igual que el 301 | Lo mismo; mantiene el método de la petición (formularios, API) |
| 302 | Movida temporalmente | Señal débil; tiende a seguir mostrando la URL de origen | Campañas, pruebas, mantenimiento |
| 307 | Redirección temporal | Igual que el 302 | Lo mismo, manteniendo el método |
| 410 | Eliminada | La retira del índice | Contenido borrado sin sustituto |
El error clásico es dejar un 302 en un cambio que es definitivo: algunos gestores y paneles de hosting lo ponen por defecto. Comprueba siempre qué código devuelve realmente.
Cómo hacer redirecciones 301 en .htaccess
Si tu web está en un servidor Apache (lo habitual en hostings compartidos), las redirecciones van en el archivo .htaccess de la raíz. Antes de tocarlo, guarda una copia: un error de sintaxis deja toda la web con un error 500. En los ejemplos, cambia www.example.com por tu dominio.
Una URL a otra
Redirect 301 /contacto.html https://www.example.com/contacto/Una carpeta entera a otra
RedirectMatch 301 ^/blog/(.*)$ https://www.example.com/noticias/$1Cada URL de /blog/ va a su equivalente en /noticias/. Ojo con Redirect a secas: funciona por prefijo, así que Redirect 301 /blog https://www.example.com/noticias también arrastra todo lo que cuelga de /blog.
HTTP a HTTPS y sin www a www, en un solo salto
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]Esta regla envía cualquier variante directamente a la versión final. Si el mismo .htaccess sirve también subdominios, ajústala, porque los redirigiría igualmente.
Un detalle que provoca cadenas: en un .htaccess, Apache aplica las reglas RewriteRule antes que las Redirect, estén en el orden que estén. Si conviven, una URL antigua pedida por http da dos saltos. Para evitarlo, escribe también las redirecciones concretas como RewriteRule y ponlas por encima de la regla general:
RewriteEngine On
RewriteRule ^contacto\.html$ https://www.example.com/contacto/ [R=301,L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]Cambio de dominio conservando cada ruta
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?dominio-antiguo\.com$ [NC]
RewriteRule ^ https://www.dominio-nuevo.com%{REQUEST_URI} [R=301,L]Una URL con parámetros
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=42$
RewriteRule ^producto\.php$ https://www.example.com/productos/silla-de-roble/ [R=301,L,QSD]Redirect no ve los parámetros; hay que comprobarlos con RewriteCond. La opción QSD (Apache 2.4 o superior) evita que ?id=42 se arrastre a la URL nueva.
Si tu servidor es Nginx no existe .htaccess; el equivalente va en la configuración del sitio:
location = /contacto.html {
return 301 https://www.example.com/contacto/;
}Redirecciones 301 en WordPress
- Con un plugin de redirecciones (el más extendido se llama Redirection; muchos plugins de SEO traen el suyo): escribes URL de origen y de destino y eliges el código 301. Es lo más cómodo para decenas o unos cientos de reglas, y permite exportarlas.
- En el .htaccess: pon tus reglas por encima del bloque que empieza por
# BEGIN WordPress. Lo que hay entre esas marcas lo reescribe WordPress y podrías perderlo. - Al cambiar el slug de una entrada, WordPress suele redirigir la dirección antigua por su cuenta. No lo des por hecho con páginas, categorías o productos: compruébalo siempre.
Si un plugin y el .htaccess redirigen la misma URL a sitios distintos, tendrás una cadena o un bucle. Elige un único lugar para gestionarlas.
Cadenas y bucles de redirecciones
Una cadena es una redirección que lleva a otra redirección: A va a B, B va a C. Suele aparecer por acumulación (una URL que se cambió en 2021 y otra vez en 2024) o por reglas que se suman: de http a https, luego a www, luego a la barra final. Cada salto retrasa la carga y Googlebot deja de seguir la cadena a partir de 10 saltos. La solución es que cada URL antigua apunte directamente a la final.
Un bucle es una cadena que vuelve al principio: A va a B y B vuelve a A. El navegador muestra el error «demasiadas redirecciones» y la página queda inaccesible. Causas habituales:
- El servidor fuerza
httpsy un proxy o CDN situado delante le habla enhttp, de modo que la condición%{HTTPS} offse cumple siempre. - Una regla añade la barra final y otra la quita.
- Un plugin redirige en un sentido y el
.htaccessen el contrario.
canonical y el sitemap XML para que apunten a la URL final. La redirección es la red de seguridad, no el camino principal.Cómo comprobar que funcionan
El navegador guarda los 301 en caché, así que puede enseñarte una redirección que ya has corregido. Prueba en una ventana privada o, mejor, desde la terminal:
curl -I https://www.example.com/contacto.htmlLa respuesta debe empezar así:
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/contacto/Para ver todos los saltos de una cadena:
curl -sIL http://example.com/contacto.html | grep -iE '^(HTTP|location)'Si aparece más de una línea Location, tienes una cadena. En Search Console, la inspección de URL te dice qué dirección considera Google canónica, y en el informe de páginas es normal que las URL antiguas figuren como «Página con redirección». Para moverte por esos informes, tienes la guía de cómo usar Google Search Console paso a paso.
Preguntas frecuentes
¿Se pierde posicionamiento con una redirección 301?
Google trata el 301 como señal fuerte de que la URL nueva sustituye a la antigua y le traslada sus señales. Puede haber fluctuaciones mientras procesa el cambio. Lo que sí hace perder posiciones es redirigir a una página que no responde a lo mismo que la original.
¿Cuánto tiempo hay que mantener una redirección 301?
Google recomienda mantenerlas el mayor tiempo posible, en general al menos un año. Si la URL antigua tiene enlaces desde otras webs, déjala de forma indefinida: no cuesta nada y sigue recogiendo esas visitas.
¿Redirección 301 o etiqueta canonical?
El 301 cuando la URL antigua deja de existir para el visitante. La etiqueta canonical cuando ambas URL deben seguir abiertas pero quieres que Google muestre solo una, por ejemplo en versiones con filtros.
¿Puedo redirigir todas las URL antiguas a la página de inicio?
No es buena idea. Google puede tratar esas redirecciones como un error 404 encubierto y no trasladar ninguna señal. Cada URL debe ir a su equivalente más cercano y, si no lo tiene, devolver un 404 o un 410.
En resumen
Una redirección 301 bien hecha lleva de una URL antigua a su equivalente real, en un solo salto y para siempre. Antes de cambiar URL, prepara la lista de origen y destino; después, pruébalas una a una con curl. Si has heredado una web con años de cambios y no sabes qué redirige a dónde, pide el análisis inicial gratuito: localizamos cadenas, bucles y errores 404 como parte de la revisión de SEO técnico.