Publiqué una actualización del sitemap con unas 3.000 páginas nuevas bajo /en/blog/.... Poco después apareció un patrón inesperado en Yandex Webmaster: Yandex intentaba rastrear las rutas equivalentes bajo /blog/..., sin el prefijo /en.
Si esas URLs hubieran devuelto simplemente 404, podría haber acabado con miles de intentos de rastreo inútiles sobre rutas inexistentes. Por suerte, ya tenía configurados redirects 308 permanentes desde las rutas sin prefijo de idioma hacia las URLs inglesas reales.
Esa pequeña capa defensiva de routing resultó mucho más útil de lo que esperaba.
Lo que realmente observé
La secuencia confirmada fue esta:
- Publiqué un sitemap con unas 3.000 páginas nuevas usando la estructura
/en/blog/.... - Después, Yandex Webmaster mostró que Yandex intentaba rastrear URLs correspondientes bajo
/blog/.... - Esas rutas alternativas ya estaban cubiertas por redirects 308.
- En vez de terminar en 404, las peticiones llegaban a las URLs correctas
/en/blog/....
Hay una corrección importante respecto a cómo describí inicialmente el incidente: no puedo demostrar que Yandex «interpretara mal el sitemap». Observé las rutas inesperadas después de la actualización, pero esa coincidencia temporal no prueba la causa interna. Los buscadores pueden descubrir URLs a través de distintas señales y fuentes históricas. Sin más evidencia, la afirmación precisa es simplemente que Yandex rastreó rutas que yo no esperaba.
La diferencia importa. Que un crawler solicite una URL extraña es una observación. Explicar exactamente por qué la solicitó es otra afirmación distinta.
Por qué fueron útiles los redirects 308
Mi lógica trataba la ruta corta como un alias permanente de la URL localizada:
/blog/example-post -> 308 -> /en/blog/example-postAsí, aunque el crawler llegara por una URL inesperada, terminaba en la página que yo realmente quería servir.
308 Permanent Redirect es una redirección HTTP permanente que conserva el método y el cuerpo de la petición. En las peticiones GET normales de un crawler, conservar el método suele ser secundario; lo importante aquí era que la redirección era explícitamente permanente. La documentación actual de Yandex Webmaster clasifica tanto 301 como 308 como redirecciones permanentes.
Documentación oficial de Yandex Webmaster sobre redirecciones.
Eso no significa que 308 sea automáticamente mejor que 301 para SEO. En mi caso ya usaba 308 y cumplió la función que necesitaba: una URL imprevista no se convirtió en un callejón sin salida.
Un redirect es una red de seguridad, no una solución para el sitemap
Los redirects limitaron el daño, pero no hicieron deseable el rastreo inesperado. Cada redirección innecesaria añade otra petición y otro salto. Además, una regla demasiado amplia puede ocultar errores en la generación de URLs si dejas de investigar de dónde salen.
Si el propio sitemap contiene URLs antiguas o URLs que redirigen, la solución correcta es arreglar el sitemap y apuntar a las URLs finales. Las redirecciones deberían proteger rutas antiguas, alternativas o descubiertas por accidente; no justificar datos de URL descuidados.
En mi caso, el sitemap ya contenía /en/blog/.... Los redirects simplemente hacían el sitio más tolerante cuando un crawler llegaba por /blog/....
Qué comprobaría hoy después de algo así
- Abrir el sitemap desplegado. No confiar solo en el generador: revisar el archivo real y muestrear URLs.
- Comprobar las respuestas finales. Las URLs destinadas a indexarse deberían resolver directamente a la página correcta, sin cadenas evitables.
- Probar rutas alternativas previsibles. Si una URL antigua o sin prefijo tiene un destino permanente, la relación debe ser explícita y uno a uno.
- Evitar cadenas de redirects.
A -> B -> Ces más difícil de razonar queA -> C. - Comparar informes del crawler con evidencia del servidor cuando sea posible. Las herramientas para webmasters son útiles, pero no siempre explican dónde se descubrió originalmente una URL.
- No inferir ranking solo a partir del rastreo. Crawling, indexación, ranking y tráfico son etapas distintas.
Una comprobación mínima puede ser:
curl -I https://example.com/blog/example-post
HTTP/2 308
location: https://example.com/en/blog/example-postEs un ejemplo ilustrativo; la idea es verificar el código exacto y el destino exacto en lugar de asumir que la regla funciona.
Lo que puedo concluir y lo que no
Puedo confirmar que los redirects 308 ya configurados evitaron que las peticiones inesperadas a /blog/... terminaran en 404 y las enviaron a las URLs previstas.
No puedo confirmar que el parser del sitemap de Yandex fuera la causa. Tampoco medí una mejora de ranking, una mejora de indexación ni una cantidad concreta de tráfico «salvado». Afirmarlo sería ir más allá de la evidencia.
La lección que me quedó es más estrecha y, para mí, más útil: la arquitectura de URLs debería tolerar errores previsibles en los límites del sistema. Un sitemap limpio sigue siendo la primera línea de defensa. Una capa precisa de redirecciones permanentes es la segunda.
Cuando existen ambas, una ruta inesperada del crawler tiene muchas menos probabilidades de convertirse en miles de URLs muertas.