El problema típico en un medio grande: volumen + legado
En Expreso aparecían los frentes clásicos de un sitio con años de contenido:
- 404 y otros 4XX por URLs viejas, inventadas por bots o generadas por patrones incorrectos.
- Imágenes rotas (assets perdidos) que detonaban “Broken images” y “Page has broken image”.
- Mixed content (páginas HTTPS con recursos HTTP).
- Meta duplicada (multiple meta description) por componentes que se enciman.
- Sitemaps intermitentes (503 ocasionales por carga/proxy/cache).
- Links externos con redirección (http → https / acortadores).
En un medio, estos detalles se multiplican rápido: si no hay un sistema de mantenimiento, el sitio puede seguir publicando sin parar… pero cada semana el “ruido” crece y los reportes se ponen más difíciles de controlar.
Estrategia: atacar en capas (servidor → CDN → WordPress)
La lógica fue simple: en lugar de perseguir errores uno por uno, se construyó un sistema de limpieza y prevención.
1) NGINX: higiene global para reducir ruido y proteger recursos
La primera capa fue filtrar lo que llega al sitio:
- Requests típicos de scanners (.env, wp-config.php, admin.php, shells, rutas falsas).
- Rutas repetitivas que inflan logs y auditorías (ej. variantes de mraid.js, pagespeed, etc.).
- Comportamiento “higiénico” para 4XX sin romper endpoints legítimos.
Se organizó en snippets para no arriesgar el vhost y se aplicaron respuestas apropiadas:
- 444 / 410 / 204 dependiendo del caso, evitando pasar tráfico basura a PHP.
- Excepciones claras donde sí debe responder el sitio (ej. .well-known válido o rutas reales).
Impacto: menos carga inútil, menos errores falsos y una base más estable para rastreo.
2) CDN (S3/CloudFront): resolver “Broken images” de forma masiva
Aquí estaba el volumen real.
En un medio, muchas imágenes históricas se pierden o se borran con el tiempo. Recuperarlas es inviable, pero sí se puede evitar que:
- el usuario vea imágenes rotas,
- los crawlers encuentren miles de 404,
- el sitio se “ensucie” eternamente en auditorías.
Solución práctica aplicada en Expreso: placeholders en S3 + invalidation en CloudFront.
Flujo:
- Extraer del reporte (CSV) las URLs de imágenes con 4XX en cdn.expreso.press.
- Subir un placeholder mínimo (1px o imagen ligera) con content-type correcto.
- Invalidar CloudFront para limpiar 404 cacheados.
Aprendizaje clave: el enfoque “naive” de AWS CLI (head-object por URL) se puede volver lentísimo o colgarse en listas grandes. Para Expreso se migró a un método “FAST” con boto3 (SDK) + paralelismo + timeouts, con progreso visible en logs.
Detalle importante:
- Algunos reportes traen rutas ya con wp-content/uploads/…, así que el sistema debe evitar duplicar keys como wp-content/uploads/wp-content/uploads/….
3) Mixed content: cortar el “HTTP dentro de HTTPS”
Mixed content no siempre rompe la página, pero sí deja:
- alertas de seguridad
- reportes negativos
- inconsistencias técnicas
Se trabajó para estandarizar:
- recursos y embeds en HTTPS
- corrección de patrones legacy (http://…) cuando aplicaba
- regla operativa: nada “inseguro” en recursos pegados
4) Enlaces externos con redirección (External 3XX)
En auditorías, es común encontrar:
- links externos en http:// que redirigen a https://
- acortadores (bit.ly, tinyl…) que añaden saltos
- dominios que cambiaron canonical o redirigen a rutas extrañas
En Expreso se separó el trabajo en:
- Auto: mismo host (normalización segura http→https / www→no-www).
- Review: shorteners, cadenas raras, redirects a login/paywall, etc.
Esto permite arreglar en lote lo seguro y dejar el resto para revisión sin riesgo.
Resultado: pasar de “apagar incendios” a operar con control
Una vez aplicadas las capas (servidor + CDN + normalización), el sitio queda:
- más limpio para crawlers,
- con menos roturas visibles,
- y con una rutina clara de mantenimiento para que no se vuelva a acumular.
Operación futura (lo que mantiene a Expreso sano)
Reglas técnicas simples para capturistas (sin meterse al contenido)
- Pegar enlaces siempre en https
- Evitar acortadores: pegar la URL final
- Imágenes solo desde Media Library (no hotlink)
- Embeds/iframes siempre en https
Rutina semanal para admins (20–30 minutos)
- Correr auditoría (Ahrefs o similar) y atender en orden:
- Broken images
- Links a páginas rotas
- Mixed content
- Multiple meta description
- Timeouts / 5XX
- Ejecutar fixes por lotes (scripts + invalidation) cuando aplique.
- Validar sitemaps (si hay intermitencia, se atiende por performance/proxy/cache, no por “contenido”).
Conclusión
En un medio como Expreso, el SEO técnico no se resuelve con un ajuste aislado: se resuelve con sistema + rutina.
Cuando se controla el ruido, se estabiliza la entrega y se corrigen assets rotos a escala, el sitio se vuelve más rastreable, más confiable y mucho más fácil de mantener semana con semana.