Cómo comprobar redirecciones: verificador de redirecciones 301, curl y DevTools
Para comprobar las redirecciones, solicita la URL y sigue cada salto hasta que una página responda 200: necesitas el código de estado de cada paso, el número de pasos y la dirección final. La forma más rápida es el verificador de redirecciones online gratuito: pega una URL y muestra toda la cadena 301/302/307/308. En una terminal, curl -sIL hace lo mismo. A continuación encontrarás tres formas de comprobar las redirecciones de un sitio web, una prueba rápida para verificar que una redirección 301 funciona y cómo corregir cadenas y bucles en nginx, Apache y WordPress.
Cómo comprobar redirecciones online
La forma más rápida es el verificador de redirecciones gratuito. Solicita la URL, sigue por sí mismo cada encabezado Location (hasta 15 pasos) y muestra todo el recorrido.
- Pega la dirección completa, incluido el esquema:
http://example.comyhttps://example.comsuelen comportarse de forma distinta, así que revisa ambas. - Lee el resumen: número de redirecciones, estado final, tiempo total y si la cadena termina en el mismo dominio o en otro.
- Recorre la cadena paso a paso. Cada paso muestra su URL y su código: 301 o 308 se marcan como permanentes, 302 o 307 como temporales.
- Revisa las recomendaciones que aparecen bajo la cadena. La herramienta señala las cadenas de más de un paso, las redirecciones temporales que quizá deberían ser 301 y las redirecciones a otro dominio, y confirma si la redirección de HTTP → HTTPS es correcta.
Ten en cuenta dos limitaciones: el verificador solo sigue redirecciones HTTP del lado del servidor (no meta refresh ni JavaScript, ver más abajo) y solicita la página con su propio user agent, por lo que las redirecciones que dependen del país, el dispositivo o las cookies del visitante pueden verse distintas para los usuarios reales.
Cómo comprobar una redirección 301 con curl
En una terminal, curl muestra los encabezados de respuesta sin procesar y sin la caché del navegador:
curl -sIL http://example.com/old-page \
| grep -iE "^HTTP|^location"
-I solicita solo los encabezados, -L sigue las redirecciones y grep conserva únicamente las líneas de estado y los destinos. Un resultado correcto se ve así:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page/
HTTP/2 200
Algunos servidores responden a las solicitudes HEAD de forma distinta a las normales. Si el resultado parece extraño, repite la prueba con una solicitud GET real: curl -sL -o /dev/null -D - URL.
Comprobar redirecciones en Chrome DevTools
- Abre DevTools (F12) → Network.
- Activa Preserve log, de lo contrario los pasos de la redirección desaparecen al cambiar la página, y Disable cache.
- Carga la URL antigua. Cada paso aparece como una fila independiente con su estado; el encabezado Location está en los encabezados de respuesta.
Los navegadores guardan en caché las respuestas 301 de forma agresiva. Si cambiaste una redirección y el navegador sigue aplicando la anterior, prueba en una ventana privada o con curl antes de suponer que el servidor falla.
¿Funciona mi redirección 301? Comprobación en cuatro puntos
- La primera respuesta es 301 o 308. Un 302 o 307 en un cambio permanente es el error más común: la URL antigua puede permanecer en el índice.
- Location apunta directamente a la URL final. Un solo salto, no dos ni tres: sin desvíos por
http://,wwwni por la falta de una barra final. - La dirección final responde 200 y es la página que querías, no la página de inicio ni un 404.
- Todas las variantes se comportan igual. Revisa
http://yhttps://, con y sinwww: cada una debe llegar a la URL final con una sola redirección.
301 vs 302 vs 307 vs 308
| Código | Tipo | Método de solicitud | Cómo lo trata Google | Úsalo para |
|---|---|---|---|---|
| 301 | Permanente | Puede cambiar POST a GET | Señal fuerte de que el destino pasa a ser el canónico | URL modificadas, HTTPS, www/sin www, cambios de dominio |
| 308 | Permanente | Se conserva | Igual que 301 | Cambios permanentes en formularios y APIs |
| 302 | Temporal | Puede cambiar POST a GET | Señal débil; el origen normalmente permanece en el índice | Promociones cortas, pruebas A/B, mantenimiento |
| 307 | Temporal | Se conserva | Igual que 302 | Cambios temporales donde importa el método |
| Meta refresh / JS | A nivel de página | - | El meta refresh instantáneo se interpreta como permanente; JS solo después del renderizado | Solo cuando las redirecciones del servidor no son posibles |
También puede aparecer un 307 en DevTools sin que tu servidor lo envíe: es la redirección interna del navegador a HTTPS para los sitios que están en la lista HSTS. curl y el verificador en línea mostrarán en su lugar la respuesta real del servidor.
Cadenas y bucles de redirecciones
Una cadena son varias redirecciones seguidas: http://example.com/page → https://example.com/page → https://www.example.com/page → https://www.example.com/page/. Cada paso añade un viaje de ida y vuelta para el usuario. Googlebot sigue hasta 10 saltos, pero Google recomienda mantener las cadenas cortas, y cada paso adicional es un punto más donde algo puede fallar en la próxima migración. Procura que haya una sola redirección desde cualquier dirección antigua hasta la final.
Un bucle es una cadena que vuelve a una dirección ya visitada, por lo que nunca termina. Los navegadores muestran ERR_TOO_MANY_REDIRECTS y la página no se puede indexar. En el verificador, un bucle aparece como una cadena que llega al límite de 15 pasos con las mismas direcciones repetidas. Causas típicas: una redirección a HTTPS en el servidor junto con la opción "Flexible SSL" en el CDN, o reglas de www en conflicto en dos lugares (la configuración del servidor y el CMS).
Cómo revisar las redirecciones de todo un sitio web
Las URL individuales sirven para comprobaciones puntuales. Para encontrar todas las cadenas de un sitio, necesitas un rastreador que siga los enlaces internos y registre cada redirección. SEO Audit lo hace e informa de las cadenas y los bucles de redirecciones como problemas separados, junto con los enlaces rotos, para que veas qué enlaces internos siguen apuntando a direcciones antiguas.
Cómo corregir las redirecciones
nginx
Combina el esquema y el host en un solo paso en lugar de dos:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
location = /old-page/ {
return 301 /new-page/;
}
}
Añade un bloque listen 443 aparte para www.example.com que también devuelva 301 a https://example.com$request_uri. Después de editar, ejecuta nginx -t y recarga.
Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
Redirect 301 /old-page/ https://example.com/new-page/
El generador de .htaccess crea estas reglas sin errores de escritura.
WordPress
- Asegúrate de que en Ajustes → Generales aparezca la URL final (https y la versión correcta con o sin www) en ambos campos de dirección; una discrepancia con la regla del servidor es una causa clásica de bucles.
- Para páginas individuales usa un plugin de redirecciones (por ejemplo, Redirection) o el gestor de redirecciones de tu plugin de SEO, y evita configurar la misma redirección en un plugin y en la configuración del servidor.
- Después de cambiar los enlaces permanentes, revisa algunas URL antiguas: WordPress deduce por sí mismo algunos slugs antiguos, pero no todos.
Sea cual sea el servidor, actualiza los enlaces internos, las etiquetas canonical y el sitemap para que apunten directamente a las URL finales, de modo que las redirecciones solo hagan falta para enlaces externos y marcadores antiguos.
Por qué esto importa para la promoción de enlaces
Los enlaces apuntan a una dirección concreta. Con una redirección permanente su valor sigue llegando a la página final, pero es mejor promocionar directamente la dirección final. Si una página promocionada se movió después del lanzamiento, configura un 301 desde la dirección antigua: no hace falta rehacer las publicaciones, consulta "¿Puedo eliminar o modificar una publicación?".