Cuando hablamos de cómo funciona una página web, solemos centrarnos en el frontend (ya lo vimos en un post sobre roles de programador web) y casi nunca prestamos atención al backend, ni al diálogo silencioso que hace nuestro navegador cada vez que visitamos Netflix, por ejemplo.
En un post anterior exploramos las cabeceras HTTP, esas líneas invisibles que controlan caché, seguridad, compresión y más. Hoy damos el siguiente paso lógico: entender los códigos de estado HTTP, cómo usarlos correctamente y por qué un mal uso puede afectar tanto a tus usuarios como a tu posicionamiento en buscadores.
¿Qué son los códigos de estado HTTP?
Los códigos de estado son respuestas numéricas de tres dígitos que un servidor devuelve tras procesar una solicitud HTTP, es decir: Cuando entramos a una pagina web y están definidos oficialmente en la RFC 9110
y se agrupan en cinco clases:
- 1xx (Informativos): La solicitud se recibió y se está procesando.
Ejemplo: 100 Continue - 2xx (Éxito): La solicitud se completó con éxito.
Ejemplo: 200 OK, 201 Created - 3xx (Redirección): Se necesita una acción adicional para completar la solicitud.
Ejemplo: 301 Moved Permanently, 302 Found - 4xx (Error del cliente): La solicitud contiene un error o no se puede cumplir.
Ejemplo: 404 Not Found, 403 Forbidden - 5xx (Error del servidor): El servidor falló al procesar una solicitud válida.
Ejemplo: 500 Internal Server Error, 503 Service Unavailable
Estos códigos no son solo para humanos. Navegadores, bots de búsqueda, APIs y herramientas de monitoreo los interpretan para tomar decisiones automáticas, e incluso Google los revisa constantemente.
Los más comunes (y los más mal usados)
200 OK
Indica que la solicitud se procesó correctamente. Es la señal que el servidor envía al navegador o servicio de que la página o recurso está disponible y funcionando.
No debe confundirse con el contenido: una página puede devolver 200 OK aunque esté en blanco, no muestre información o su diseño falle.
301 vs 302
- 301 Moved Permanently: La URL antigua ya no existe y el contenido se trasladó definitivamente a otra dirección.
Ejemplo: cambias midominio.com/vieja-pagina a midominio.com/nueva-pagina. Si un usuario o Google visita la URL antigua, será redirigido automáticamente a la nueva y se transfiere la autoridad SEO. - 302 Found (o Moved Temporarily): La redirección es temporal. La URL original sigue siendo válida, y los motores de búsqueda no transfieren autoridad SEO a la nueva URL.
Ejemplo: quieres mostrar una promoción temporal en midominio.com/oferta y redirigir a los usuarios a otra página mientras dura la campaña. Cuando termine, vuelves a mostrar la página original sin afectar el SEO.
Error común: usar 302 cuando en realidad la redirección es permanente (como al migrar un sitio) puede perder tráfico orgánico, porque Google no transfiere la autoridad de la URL antigua a la nueva.
404 Not Found vs 410 Gone
- 404: La página no existe por ahora, pero podría volver.
Ejemplo: un artículo que borraste temporalmente o un enlace roto en tu sitio. Google puede volver a rastrearla más adelante. - 410: La página fue eliminada de forma permanente y no volverá.
Ejemplo: un producto que ya no vendes y que quieres quitar del índice de búsqueda. Google desindexa esta URL más rápido que un 404.
Tip: usa 410 cuando quieras limpiar contenido obsoleto de Google, y 404 cuando la ausencia de la página podría ser temporal.
401 Unauthorized vs 403 Forbidden
- 401: Necesitas autenticación. No enviaste credenciales válidas o no iniciaste sesión.
Ejemplo: intentas acceder amidominio.com/mi-cuentasin estar logueado; el servidor responde 401 y te pide iniciar sesión. - 403: Ya estás autenticado, pero no tienes permiso para acceder al recurso.
Ejemplo: un usuario normal intenta entrar amidominio.com/admin; aunque haya iniciado sesión, no tiene permisos, y el servidor devuelve 403.
Confundirlos genera flujos de autenticación confusos y posibles vulnerabilidades de seguridad.
429 Too Many Requests
Ideal para APIs con rate limiting. Indica: “estás haciendo demasiadas peticiones”. Incluye cabeceras como Retry-After para mejorar la experiencia del usuario.
500 Internal Server Error
Un “cajón de sastre” peligroso. Nunca lo expongas sin contexto ni registro. En producción, muestra una página amigable al usuario, pero conserva el código 500 real para que crawlers y herramientas de monitoreo detecten el fallo.
429 Too Many Requests
Significa que estás haciendo demasiadas solicitudes en poco tiempo.
Ejemplo práctico:
- Una API de pagos permite 100 consultas por hora por usuario. Si excedes ese límite, devuelve 429 Too Many Requests y la cabecera Retry-After: 3600, indicando que debes esperar 1 hora antes de volver a intentar.
- Otro ejemplo: un sitio de login limita a 5 intentos por minuto. Si un bot intenta 50 veces en un minuto, el servidor responde 429 para frenar el abuso.
Protección contra ataques: esto ayuda a prevenir ataques tipo DDoS o scraping masivo, evitando que el servidor se sature.
500 Internal Server Error
Significa que el servidor falló al procesar una solicitud válida, indicando un problema interno.
Ejemplo práctico:
- Tu sitio web tiene un script que genera reportes y falla por un error en la base de datos. Cuando un usuario intenta acceder al reporte, el servidor devuelve 500 Internal Server Error indicando que algo falló internamente.
Buenas prácticas: nunca mostrar detalles técnicos al usuario final; registra el error para monitoreo. Mantener el código 500 real permite que crawlers y herramientas detecten fallos críticos.
SEO y códigos HTTP: un lenguaje que Google entiende
Los códigos de estado HTTP no son un detalle técnico menor: son parte del lenguaje que tu sitio habla con los motores de búsqueda. Usarlos con precisión envía señales claras sobre la salud, estructura y confiabilidad de tu web.
Cada redirección limpia, cada error 404 bien gestionado, cada respuesta 200 con contenido real… suma puntos invisibles que, con el tiempo, se traducen en tráfico, autoridad y conversiones.
Así que la próxima vez que depures una API o configures una redirección, no preguntes solo “¿funciona?”, sino “¿qué código de estado estoy devolviendo?” Porque en la web, incluso los números más pequeños tienen un gran impacto.
Tip técnico rápido: errores 404
Si quieres que tus páginas rotas tengan un buen manejo sin afectar SEO, basta con un pequeño ajuste en tu .htaccess:
ErrorDocument 404 /404.html
Crea una pagina llamada 404.html, Esto hará que cuando alguien llegue a una URL inexistente:
- Se muestre tu página de error personalizada, con estilo y mensaje útil.
- Se devuelva el código 404 real, indicando a Google que la página no existe.
No necesitas ser un experto en servidores: con una línea puedes mejorar la experiencia del usuario y mantener tu SEO limpio.