Hace poco un cliente me contactó con un caso poco habitual: el sitemap de Yoast SEO devolvía un error 404 no encontrado. Evidentemente la primera idea que viene a la cabeza es comprobar si efectivamente está activada la funcionalidad de sitemap de Yoast, pero no, no era ese el problema.
Y es que a veces pasan las cosas más raras, pero es normal: son tantas las plantillas y tantos los plugins existentes, que es inevitable que surjan problemas inesperados con algunas combinaciones. Pero todo tiene su remedio. Así que vamos a ver cómo solucionar el problema de error 404 en el sitemap de Yoast SEO.
En este artículo explico cómo solucionar un error 404 (no encontrado) en el sitemap de Yoast SEO. Si tu problema no es que dé un error 404, sino que el sitemap no se visualiza de forma correcta, echa un vistazo a este otro artículo:
Tabla de contenidos
Por qué la URL del sitemap de Yoast da error 404
Ante todo hay que entender el problema. Por supuesto, lo primero que tienes que comprobar es que la funcionalidad esté activa. Si tienes una versión de Yoast 6.3 o anterior lo encontrarás en SEO > Mapas del sitio XML.
Sin embargo a partir de Yoast SEO 7.0 (que justamente se publicó ayer) ha cambiado de sitio, así que si ya lo has actualizado ahora puedes encontrarlo en SEO > General > Características > Mapas del sitio XML.
¿Está activado? Bien, entonces Yoast está generando el sitemap. Puedes comprobarlo accediendo la www.tuweb.com/index.php?sitemap=1
Está ahí, ¿verdad? Sí maifrén, el problema como ves no está en que Yoast no genere el sitemap: el problema está en los enlaces permanentes. Simplemente el servidor no está reconociendo que sitemap_index.xml es un permalink de index.php?sitemap=1.
Las causas pueden ser muchas, aunque lo más probable es que algún plugin (o incluso la plantilla) esté interfiriendo con esta funcionalidad. Si quieres entretenerte en buscar el culpable, puedes echar un vistazo a este artículo, las primeras partes pueden serte de ayuda:
Pero en este caso (creo que) no merece la pena. Lo solucionamos, y ya está.
Solucionando el error 404 no encontrado en sitemap.xml y sitemap_index.xml
Bien, habiendo confirmado que el sitemap está, lo que tenemos que hacer es conseguir que se muestre en el permalink que necesitamos, así que primero vamos a intentar lo obvio: ir a Ajustes > Enlaces permanentes y, sin cambiar ninguno de los ajustes, darle al botón Guardar.
No te hagas ilusiones, lo más probable es que no consigas nada, pero siempre hay que intentarlo en primer lugar; así que seguimos: vamos a regenerar las URLs para el sitemap que, ahora lo sabes, sí está generando Yoast correctamente.
Regenerando las URLs para el sitemap
Por defecto Yoast muestra el sitemap general en sitemap_index.xml, pero recuerda que no es esa la situación estándar para él, y que los robots de búsqueda lo van a buscar siempre en sitemap.xml, a no ser que tú les indiques lo contrario, por ejemplo a través de la directiva Sitemap en el robots.txt o a través de las herramientas para webmasters, en el caso de Google o Bing.
Yoast soluciona esto de la manera más sencilla del mundo: creando una redirección desde sitemap.xml a sitemap_index.xml. Así se asegura que no hay «encontronazos» con otros plugins o con un posible archivo sitemap.xml real.
Así que la solución pasa por hacer dos cosas:
- Conseguir que el servidor muestre el contenido de www.tuweb.com/index.php?sitemap=1 en www.tuweb.com/sitemap_index.xml
- Crear una redirección desde www.tuweb.com/sitemap.xml a www.tuweb.com/sitemap_index.xml
Reparando (por fin) el error 404 a través del htaccess
Y como hablamos de permalinks y de URLs, donde tenemos que ir es, efectivamente, al archivo htaccess. Como siempre, antes de tocar nada, haz primero una copia de seguridad de este archivo (basta con que lo descargues a tu ordenador).
¿Qué vamos a hacer en este archivo. Pues sencillo: simplemente crear una directiva para decirle a nuestro servidor que cuando la URL diga sitemap_index.xml muestre lo que hay en index.php?sitemap=1. Basta con añadir esto:
#Solución al error 404 en el sitemap de YoastRewriteEngine On RewriteBase / RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L] RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 [L] #FIN de solución al error 404 en el sitemap de Yoast
Guardar y listo. Si vas a www.tuweb.com/sitemap_index.xml ya deberías ver allí el índice de sitemaps de Yoast SEO.
Redireccionando de sitemap.xml a sitemap_index.xml
Pero aún queda una última cosa por hacer, como decíamos antes: establecer una redirección para que los bots de indexación encuentren el sitemap al acceder a www.tuweb.com/sitemap.xml (que, en estos momentos, continúa mostrando un error 404).
Es sencillo: basta con hacer una redirección 301. Y también hemos de hacerla en el archivo htaccess, así que añadimos al final una nueva directiva:
Redirect 301 /sitemap.xml https://www.tuweb.com/sitemap_index.xml
Ojo, date cuenta del formato: mientras que en la primera parte, la URL a redirigir, le estamos dando la URL relativa (/sitemap.xml) en la segunda parte le damos la URL absoluta. Recuerda incluir el https:// (o el http:// si aún no tienes certificado SSL, lo cual merece un tirón de orejas) y cambiar tuweb.com por tu dominio.
Y ahora por fin sí, todo vuelve a estar en su lugar: www.tuweb.com/sitemap.xml lleva directamente a www.tuweb.com/sitemap_index.xml, donde vuelve a estar el sitemap de Yoast SEO; tan feliz como si nunca hubiera desaparecido. 🙂
Jairo dice
Muchas gracias Enrique, me acabas de salvar de un infarto jajaj he hecho «justes > Enlaces permanentes y, sin cambiar ninguno de los ajustes, darle al botón Guardar.» y se ha solucionado. Qué susto. Intenté pasar de Yoast a All in one, no me gustó, y al volver atrás perdí el Sitemap. ¡gracias!
john dice
buenas tardes, consulta.
agrego las directivas que tu mencionas en mi htaccesss y me da error 403. Sabrias porque se da esto al querer agregar las nuevas directivas? y alguna posible solución?
Gracias desde ya.
Saludos
Ingrid dice
Muchas gracia spor el post. Me ha servido demasiado.