{"id":357,"date":"2026-10-27T09:42:43","date_gmt":"2026-10-27T08:42:43","guid":{"rendered":"http:\/\/tecnologiasweb.jsenso.es\/?p=357"},"modified":"2026-10-27T10:08:09","modified_gmt":"2026-10-27T09:08:09","slug":"el-fichero-sitemap-xml","status":"publish","type":"post","link":"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-sitemap-xml\/","title":{"rendered":"El fichero sitemap.xml [actualizaci\u00f3n 2026]"},"content":{"rendered":"<p id=\"p-rc_8ca1c9ffba88f9bf-19\" data-path-to-node=\"1\"><span class=\"\" data-path-to-node=\"1,0\">[Publicada el 15 de marzo de 2017. Revisada en octubre de 2026]<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-20\" data-path-to-node=\"2\"><span data-path-to-node=\"2,0\">Esta entrada arrastra sus a\u00f1os a las espaldas y algunas cifras y etiquetas se hab\u00edan quedado rancias<\/span><span data-path-to-node=\"2,2\">. Mantengo lo que sigue en pie, corrijo lo que la realidad ha dejado desfasado y a\u00f1ado cambios que en 2017 ni exist\u00edan<\/span><span data-path-to-node=\"2,4\">. Cuando algo sea distinto a lo que afirm\u00e9 en su d\u00eda, te lo se\u00f1alo directamente en su apartado<\/span><span data-path-to-node=\"2,6\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-21\" data-path-to-node=\"3\"><span data-path-to-node=\"3,0\">Sigo adelante con esta trilog\u00eda sobre archivos de configuraci\u00f3n en servidores web<\/span><span data-path-to-node=\"3,2\">. Si en las entregas anteriores me detuve en <a href=\"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-sitemap-xml\/\" target=\"_blank\" rel=\"noopener\">.htaccess<\/a>, ahora le toca el turno al sitemap.xml, un elemento que camina de la mano de <a href=\"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-robots-txt-actualizacion-2026\/\" target=\"_blank\" rel=\"noopener\">robots.txt (del que hablo en otro art\u00edculo)<\/a>.<\/span><\/p>\n<h2><\/h2>\n<h2>Mapa visual del sitio frente a sitemap.xml<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-22\" data-path-to-node=\"5\"><span data-path-to-node=\"5,0\">Antes de entrar en harina conviene deshacer un l\u00edo terminol\u00f3gico recurrente<\/span><span data-path-to-node=\"5,2\">. En clase veo a menudo que mis alumnos confunden el mapa del sitio tradicional con el sitemap.xml<\/span><span data-path-to-node=\"5,4\">. Es un despiste comprensible porque ambos t\u00e9rminos significan lo mismo y persiguen un fin similar: mostrar c\u00f3mo se organiza la web<\/span><span data-path-to-node=\"5,6\">. Pero sus diferencias son notables<\/span><span data-path-to-node=\"5,8\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-23\" data-path-to-node=\"6\"><span data-path-to-node=\"6,0\">Un mapa del sitio visual forma parte de lo que Rosenfeld, Morville y Arango (2015) clasifican como sistemas de navegaci\u00f3n complementarios<\/span><span data-path-to-node=\"6,2\">. Es decir, mecanismos pensados para un fin concreto dentro del esquema de navegaci\u00f3n del portal<\/span><span data-path-to-node=\"6,4\">. Eso implica una serie de rasgos propios:<\/span><\/p>\n<ul data-path-to-node=\"7\">\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-24\" data-path-to-node=\"7,0,0\"><span data-path-to-node=\"7,0,0,0\">Queda expuesto directamente al usuario, que puede consultarlo a trav\u00e9s de un enlace situado en la interfaz<\/span><span data-path-to-node=\"7,0,0,2\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-25\" data-path-to-node=\"7,1,0\"><span data-path-to-node=\"7,1,0,0\">Su maquetaci\u00f3n utiliza HTML (o formatos gr\u00e1ficos, aunque esta \u00faltima opci\u00f3n entorpece la indizaci\u00f3n) y respeta las decisiones tipogr\u00e1ficas y el dise\u00f1o general de la web<\/span><span data-path-to-node=\"7,1,0,2\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-26\" data-path-to-node=\"7,2,0\"><span data-path-to-node=\"7,2,0,0\">El buscador lo indiza como cualquier otra p\u00e1gina, por lo que influye en la visibilidad del sitio<\/span><span data-path-to-node=\"7,2,0,2\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-27\" data-path-to-node=\"7,3,0\"><span data-path-to-node=\"7,3,0,0\">No responde a un tama\u00f1o fijo; depende de la arquitectura de la informaci\u00f3n del proyecto<\/span><span data-path-to-node=\"7,3,0,2\">. Conviene organizarlo bien (mediante sangr\u00edas o bloques) y evitar desplazamientos verticales excesivos<\/span><span data-path-to-node=\"7,3,0,4\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-28\" data-path-to-node=\"7,4,0\"><span data-path-to-node=\"7,4,0,0\">Tampoco resulta obligatorio<\/span><span data-path-to-node=\"7,4,0,2\">. Solo tiene sentido cuando la estructura del sitio alcanza cierta complejidad y conviene ofrecer un atajo directo<\/span><span data-path-to-node=\"7,4,0,4\">. Aporta una panor\u00e1mica completa de un vistazo e incluso favorece la serendipia al descubrir contenidos en una primera visita<\/span><span data-path-to-node=\"7,4,0,6\">. Un apunte al margen: revisando webs institucionales para buscar ejemplos de estos mapas, salta a la vista que portales de varios ministerios han regresado al dise\u00f1o de hace una d\u00e9cada<\/span><span data-path-to-node=\"7,4,0,8\">. Son desastrosos en lo visual y presentan una arquitectura de la informaci\u00f3n inexistente<\/span><span data-path-to-node=\"7,4,0,10\">.<\/span><\/p>\n<\/li>\n<\/ul>\n<p><span data-path-to-node=\"8,0\">Por el contrario, el sitemap.xml es un documento en formato XML que suele ubicarse en la ra\u00edz del servidor<\/span><span data-path-to-node=\"8,2\">. Y digo que suele porque en 2017 afirm\u00e9 que funcionaba igual de bien alojado en cualquier subdirectorio, algo cierto solo a medias: seg\u00fan la documentaci\u00f3n de Google, un sitemap alojado en una carpeta secundaria solo ampara a las direcciones que cuelgan de esa ruta, salvo que lo registres expresamente desde Search Console<\/span><span data-path-to-node=\"8,4\">. De ah\u00ed que lo m\u00e1s sensato sea mantenerlo en la ra\u00edz<\/span><span data-path-to-node=\"8,6\">. Su formato delata su prop\u00f3sito: no est\u00e1 pensado para ser le\u00eddo por personas, sino consumido por rastreadores web<\/span><span data-path-to-node=\"8,8\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2 data-path-to-node=\"9\">Funci\u00f3n del archivo<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-30\" data-path-to-node=\"10\"><span data-path-to-node=\"10,0\">Su cometido b\u00e1sico es trazar un mapa claro para que los motores de b\u00fasqueda identifiquen las rutas completas de todos los documentos del servidor<\/span><span data-path-to-node=\"10,2\">. Al disponer de este listado, el bot mantiene un control preciso sobre qu\u00e9 URLs ha procesado y cu\u00e1les tiene pendientes<\/span><span data-path-to-node=\"10,4\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-31\" data-path-to-node=\"11\"><span data-path-to-node=\"11,0\">En una web peque\u00f1a, con un sistema de enlaces coherente y una estructura bien jerarquizada, este fichero no ser\u00eda imprescindible<\/span><span data-path-to-node=\"11,2\">. Sin embargo, facilita el trabajo de rastreo<\/span><span data-path-to-node=\"11,4\">. En 2017 sostuve que tener un sitemap garantizaba de forma demostrada un mejor posicionamiento<\/span><span data-path-to-node=\"11,6\">. Hoy modero esa afirmaci\u00f3n: el buscador interpreta el sitemap como una sugerencia, jam\u00e1s como una orden, y que una URL aparezca listada no asegura que termine en el \u00edndice<\/span><span data-path-to-node=\"11,8\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-32\" data-path-to-node=\"12\"><span data-path-to-node=\"12,0\">Resulta especialmente \u00fatil en proyectos con miles de p\u00e1ginas o en sitios donde existen documentos aislados que carecen de enlaces internos que apunten hacia ellos<\/span><span data-path-to-node=\"12,2\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2 data-path-to-node=\"13\">El protocolo sitemap<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-33\" data-path-to-node=\"14\"><span class=\"\" data-path-to-node=\"14,0\">Google present\u00f3 la propuesta para facilitar el trabajo a los <i data-path-to-node=\"14,0\" data-index-in-node=\"61\">webcrawlers<\/i> en junio de 2005, apoy\u00e1ndose en las ideas planteadas en un trabajo publicado en la revista de Sigmetrics en el a\u00f1o 2000<\/span><span data-path-to-node=\"14,2\">. Un a\u00f1o m\u00e1s tarde vio la luz la versi\u00f3n 0.90 del protocolo sitemap.xml<\/span><span data-path-to-node=\"14,4\">. Hoy constituye el est\u00e1ndar indiscutible de la industria<\/span><span data-path-to-node=\"14,6\">. Las especificaciones de este protocolo establecen pautas precisas:<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-34\" data-path-to-node=\"15\"><span data-path-to-node=\"15,0\">Todas las direcciones incluidas deben pertenecer al mismo dominio y utilizar el mismo protocolo<\/span><span data-path-to-node=\"15,2\">. Los subdominios computan a efectos de SEO como sitios independientes, por lo que no deben mezclarse en el mismo archivo<\/span><span data-path-to-node=\"15,4\">. En 2017 dije que si operabas en HTTP y HTTPS deb\u00edas mantener dos ficheros separados<\/span><span data-path-to-node=\"15,6\">. La realidad actual es que todo debe transitar bajo HTTPS y el mapa debe listar \u00fanicamente la versi\u00f3n final limpia, sin URLs que respondan con redirecciones<\/span><span data-path-to-node=\"15,8\">. Para quienes gestionan redes de portales existe el env\u00edo cruzado: Google autoriza incluir direcciones de dominios distintos en un mismo sitemap siempre que todos est\u00e9n verificados en la misma cuenta de Search Console<\/span><span data-path-to-node=\"15,10\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-35\" data-path-to-node=\"16\"><span data-path-to-node=\"16,0\">El tope de tama\u00f1o fijado en 2017 era de 10 megas<\/span><span data-path-to-node=\"16,2\">. El l\u00edmite actual alcanza los 50 MB sin comprimir (52.428.800 bytes) y un m\u00e1ximo de 50.000 URLs por archivo<\/span><span data-path-to-node=\"16,4\">. Si tu sitio rebasa esas cifras, debes fragmentar la informaci\u00f3n en varios archivos sitemap.xml e integrarlos mediante un fichero de \u00edndice (sitemapindex)<\/span><span data-path-to-node=\"16,6\">. Este \u00edndice obedece a las mismas restricciones de tama\u00f1o y permite enlazar hasta 50.000 submapas<\/span><span data-path-to-node=\"16,8\">. Su estructura b\u00e1sica es esta:<\/span><\/p>\n<div class=\"code-block ng-tns-c2323155022-43 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjyveOg2tmXAxUAAAAAHQAAAAAQ0AI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2323155022-43\">\n<div class=\"animated-opacity ng-tns-c2323155022-43\">\n<pre class=\"ng-tns-c2323155022-43\"><code class=\"code-container formatted ng-tns-c2323155022-43\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-meta\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">sitemapindex<\/span> <span class=\"hljs-attr\">xmlns<\/span>=<span class=\"hljs-string\">\"http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\"<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">sitemap<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">loc<\/span>&gt;<\/span>https:\/\/www.ejemplo.es\/sitemap-paginas.xml<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">loc<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>2026-10-27<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">sitemap<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">sitemap<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">loc<\/span>&gt;<\/span>https:\/\/www.ejemplo.es\/sitemap-noticias.xml<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">loc<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>2026-10-26<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">sitemap<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">sitemapindex<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p id=\"p-rc_8ca1c9ffba88f9bf-36\" data-path-to-node=\"18\"><span data-path-to-node=\"18,0\">El archivo admite compresi\u00f3n en formato GZIP para reducir la transferencia de datos, aunque el l\u00edmite de 50 MB sigue evalu\u00e1ndose sobre el fichero descomprimido<\/span><span data-path-to-node=\"18,2\">.<\/span><\/p>\n<p id=\"p-rc_8ca1c9ffba88f9bf-37\" data-path-to-node=\"19\"><span data-path-to-node=\"19,0\">La codificaci\u00f3n obligatoria es UTF-8<\/span><span class=\"\" data-path-to-node=\"19,2\">. Si las direcciones contienen caracteres especiales, hay que escapar la sintaxis XML mediante las entidades correspondientes (<code data-path-to-node=\"19,2\" data-index-in-node=\"127\">&amp;amp;<\/code> por <code data-path-to-node=\"19,2\" data-index-in-node=\"137\">&amp;<\/code>, <code data-path-to-node=\"19,2\" data-index-in-node=\"140\">&amp;apos;<\/code> por <code data-path-to-node=\"19,2\" data-index-in-node=\"151\">'<\/code>, <code data-path-to-node=\"19,2\" data-index-in-node=\"154\">&amp;quot;<\/code> por <code data-path-to-node=\"19,2\" data-index-in-node=\"165\">\"<\/code>, <code data-path-to-node=\"19,2\" data-index-in-node=\"168\">&amp;lt;<\/code> por <code data-path-to-node=\"19,2\" data-index-in-node=\"177\">&lt;<\/code> y <code data-path-to-node=\"19,2\" data-index-in-node=\"181\">&amp;gt;<\/code> por <code data-path-to-node=\"19,2\" data-index-in-node=\"190\">&gt;<\/code>)<\/span><span data-path-to-node=\"19,4\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2 data-path-to-node=\"20\">Etiquetas b\u00e1sicas y opcionales<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-38\" data-path-to-node=\"21\"><span class=\"\" data-path-to-node=\"21,0\">El nodo ra\u00edz es <code data-path-to-node=\"21,0\" data-index-in-node=\"16\">&lt;urlset&gt;<\/code>, cada elemento individual se encierra dentro de <code data-path-to-node=\"21,0\" data-index-in-node=\"73\">&lt;url&gt;<\/code> y la direcci\u00f3n f\u00edsica se especifica en <code data-path-to-node=\"21,0\" data-index-in-node=\"118\">&lt;loc&gt;<\/code> con su protocolo completo (y un m\u00e1ximo de 2.048 caracteres)<\/span><span data-path-to-node=\"21,2\">.<\/span><\/p>\n<p data-path-to-node=\"22\">Las etiquetas secundarias que acompa\u00f1an a cada enlace han corrido distinta suerte:<\/p>\n<ul data-path-to-node=\"23\">\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-39\" data-path-to-node=\"23,0,0\"><span class=\"\" data-path-to-node=\"23,0,0,0\"><code data-path-to-node=\"23,0,0,0\" data-index-in-node=\"0\">&lt;lastmod&gt;<\/code>: Registra la fecha de la \u00faltima actualizaci\u00f3n en formato AAAA-MM-DD (admite tambi\u00e9n hora y zona horaria)<\/span><span data-path-to-node=\"23,0,0,2\">. Es la \u00fanica etiqueta opcional que Google sigue teniendo en cuenta, siempre que la informaci\u00f3n sea ver\u00eddica y consistente<\/span><span data-path-to-node=\"23,0,0,4\">. Si la cambias sistem\u00e1ticamente sin haber modificado el contenido, el robot terminar\u00e1 ignor\u00e1ndola<\/span><span data-path-to-node=\"23,0,0,6\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-40\" data-path-to-node=\"23,1,0\"><span class=\"\" data-path-to-node=\"23,1,0,0\"><code data-path-to-node=\"23,1,0,0\" data-index-in-node=\"0\">&lt;changefreq&gt;<\/code>: Declara la frecuencia te\u00f3rica de modificaci\u00f3n (<code data-path-to-node=\"23,1,0,0\" data-index-in-node=\"61\">always<\/code>, <code data-path-to-node=\"23,1,0,0\" data-index-in-node=\"69\">weekly<\/code>, <code data-path-to-node=\"23,1,0,0\" data-index-in-node=\"77\">monthly<\/code>, etc.)<\/span><span data-path-to-node=\"23,1,0,2\">. En 2017 le atribu\u00ed un peso decisivo para marcar el ritmo de visita del robot<\/span><span data-path-to-node=\"23,1,0,4\">. Fui demasiado optimista<\/span><span data-path-to-node=\"23,1,0,6\">. La documentaci\u00f3n actual de Google confirma que pasa por alto este campo, y en las notas oficiales de WordPress reconocen que apenas se utiliza<\/span><span data-path-to-node=\"23,1,0,8\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-41\" data-path-to-node=\"23,2,0\"><span class=\"\" data-path-to-node=\"23,2,0,0\"><code data-path-to-node=\"23,2,0,0\" data-index-in-node=\"0\">&lt;priority&gt;<\/code>: Pondera la importancia relativa de una URL dentro del sitio en una escala de 0.0 a 1.0<\/span><span data-path-to-node=\"23,2,0,2\">. El error habitual consist\u00eda en asignar 1.0 a todas las p\u00e1ginas, lo que neutralizaba el criterio de jerarqu\u00eda<\/span><span data-path-to-node=\"23,2,0,4\">. La recomendaci\u00f3n de la documentaci\u00f3n de Google es descartarla directamente, ya que tampoco la consumen<\/span><span data-path-to-node=\"23,2,0,6\">.<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"24\">Con estas premisas, una estructura limpia para un portal con dos p\u00e1ginas queda de este modo:<\/p>\n<div class=\"code-block ng-tns-c2323155022-44 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjyveOg2tmXAxUAAAAAHQAAAAAQ0QI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2323155022-44\">\n<div class=\"animated-opacity ng-tns-c2323155022-44\">\n<pre class=\"ng-tns-c2323155022-44\"><code class=\"code-container formatted ng-tns-c2323155022-44\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-meta\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">urlset<\/span> <span class=\"hljs-attr\">xmlns<\/span>=<span class=\"hljs-string\">\"http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\"<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">url<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">loc<\/span>&gt;<\/span>https:\/\/www.ejemplo.es\/<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">loc<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>2026-10-27<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">url<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">url<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">loc<\/span>&gt;<\/span>https:\/\/www.ejemplo.es\/saludo.html<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">loc<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>2026-03-15<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">url<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">urlset<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"26\">Si alguna herramienta te obliga a rellenar los par\u00e1metros secundarios, se a\u00f1aden a continuaci\u00f3n de la etiqueta <code data-path-to-node=\"26\" data-index-in-node=\"111\">&lt;loc&gt;<\/code>:<\/p>\n<div class=\"code-block ng-tns-c2323155022-45 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjyveOg2tmXAxUAAAAAHQAAAAAQ0gI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2323155022-45\">\n<div class=\"animated-opacity ng-tns-c2323155022-45\">\n<pre class=\"ng-tns-c2323155022-45\"><code class=\"code-container formatted ng-tns-c2323155022-45\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">changefreq<\/span>&gt;<\/span>weekly<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">changefreq<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">priority<\/span>&gt;<\/span>0.5<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">priority<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-path-to-node=\"28\"><\/h2>\n<h2 data-path-to-node=\"28\">Generaci\u00f3n del archivo<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-42\" data-path-to-node=\"29\"><span data-path-to-node=\"29,0\">Construir este archivo a mano resulta tedioso y propenso a descuidos<\/span><span data-path-to-node=\"29,2\">. La pr\u00e1ctica habitual en entornos de producci\u00f3n es automatizar su generaci\u00f3n<\/span><span data-path-to-node=\"29,4\">.<\/span><\/p>\n<p data-path-to-node=\"30\">Existen dos caminos habituales:<\/p>\n<ol start=\"1\" data-path-to-node=\"31\">\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-43\" data-path-to-node=\"31,0,0\"><span data-path-to-node=\"31,0,0,0\">Generadores en l\u00ednea: Herramientas web que analizan el sitio y entregan el documento empaquetado<\/span><span data-path-to-node=\"31,0,0,2\">. Presentan un inconveniente claro: exigen regenerar el archivo manualmente cada vez que publicas o modificas algo<\/span><span data-path-to-node=\"31,0,0,4\">. Siguen operativos servicios como XML-Sitemaps.com (gratuito hasta 500 URLs), Xml Sitemap Generator o Small SEO Tools<\/span><span data-path-to-node=\"31,0,0,6\">. De la lista que suger\u00eda en 2017 he eliminado uno que ha dejado de prestar servicio<\/span><span data-path-to-node=\"31,0,0,8\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-44\" data-path-to-node=\"31,1,0\"><span data-path-to-node=\"31,1,0,0\">M\u00f3dulos integrados en CMS: Es la v\u00eda l\u00f3gica cuando trabajas con plataformas como WordPress, Drupal o Joomla<\/span><span class=\"\" data-path-to-node=\"31,1,0,2\">. En WordPress hay una novedad destacable: desde la versi\u00f3n 5.5 (2020) el propio n\u00facleo genera un sitemap autom\u00e1tico en <code data-path-to-node=\"31,1,0,2\" data-index-in-node=\"120\">\/wp-sitemap.xml<\/code><\/span><span data-path-to-node=\"31,1,0,4\">. Es una soluci\u00f3n b\u00e1sica que no abarca im\u00e1genes, v\u00eddeos ni noticias, pero resuelve el expediente sin plugins adicionales<\/span><span data-path-to-node=\"31,1,0,6\">. Si necesitas funciones avanzadas, tendr\u00e1s que instalar una extensi\u00f3n espec\u00edfica<\/span><span data-path-to-node=\"31,1,0,8\">.<\/span><\/p>\n<\/li>\n<li>Hacerlo a mano: ni se te ocurra. Es una locura.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2 data-path-to-node=\"32\">Sitemaps espec\u00edficos<\/h2>\n<p data-path-to-node=\"33\">Dado que una web alberga recursos m\u00e1s all\u00e1 del texto, existen variantes orientadas a tipolog\u00edas concretas:<\/p>\n<ul data-path-to-node=\"34\">\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-45\" data-path-to-node=\"34,0,0\"><span data-path-to-node=\"34,0,0,0\">Im\u00e1genes: Orientados a descubrir recursos gr\u00e1ficos complejos o cargados por JavaScript<\/span><span data-path-to-node=\"34,0,0,2\">. En 2017 mencion\u00e9 que se pod\u00edan especificar t\u00edtulos, ubicaci\u00f3n geogr\u00e1fica o licencias mediante etiquetas promocionadas por Google<\/span><span class=\"\" data-path-to-node=\"34,0,0,4\">. En agosto de 2022, Google retir\u00f3 el soporte para <code data-path-to-node=\"34,0,0,4\" data-index-in-node=\"51\">&lt;image:caption&gt;<\/code>, <code data-path-to-node=\"34,0,0,4\" data-index-in-node=\"68\">&lt;image:geo_location&gt;<\/code>, <code data-path-to-node=\"34,0,0,4\" data-index-in-node=\"90\">&lt;image:title&gt;<\/code> e <code data-path-to-node=\"34,0,0,4\" data-index-in-node=\"106\">&lt;image:license&gt;<\/code><\/span><span class=\"\" data-path-to-node=\"34,0,0,6\">. En la actualidad basta con emplear <code data-path-to-node=\"34,0,0,6\" data-index-in-node=\"37\">&lt;image:image&gt;<\/code> y su correspondiente <code data-path-to-node=\"34,0,0,6\" data-index-in-node=\"72\">&lt;image:loc&gt;<\/code>, admitiendo hasta 1.000 im\u00e1genes por cada direcci\u00f3n<\/span><span data-path-to-node=\"34,0,0,8\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-46\" data-path-to-node=\"34,1,0\"><span data-path-to-node=\"34,1,0,0\">V\u00eddeo: Aportan datos sobre la localizaci\u00f3n de archivos de v\u00eddeo<\/span><span data-path-to-node=\"34,1,0,2\">. Requieren indicar la miniatura, el t\u00edtulo, una descripci\u00f3n y la ruta del reproductor<\/span><span data-path-to-node=\"34,1,0,4\">. Google tambi\u00e9n ha recortado etiquetas en este formato (eliminando precios o categor\u00edas) y admite la integraci\u00f3n mediante canales mRSS<\/span><span data-path-to-node=\"34,1,0,6\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-47\" data-path-to-node=\"34,2,0\"><span data-path-to-node=\"34,2,0,0\">Noticias: Pensados para medios digitales<\/span><span data-path-to-node=\"34,2,0,2\">. Exigen incluir el nombre del medio, idioma, t\u00edtulo y fecha<\/span><span data-path-to-node=\"34,2,0,4\">. Solo deben contener art\u00edculos publicados en los \u00faltimos dos d\u00edas, con un tope de 1.000 URLs por archivo<\/span><span data-path-to-node=\"34,2,0,6\">.<\/span><\/p>\n<\/li>\n<\/ul>\n<p id=\"p-rc_8ca1c9ffba88f9bf-48\" data-path-to-node=\"35\"><span data-path-to-node=\"35,0\">El protocolo tambi\u00e9n admite listados en texto plano (una URL por l\u00ednea) o la lectura de canales RSS y Atom<\/span><span data-path-to-node=\"35,2\">.<\/span><\/p>\n<h2 data-path-to-node=\"36\">Notificaci\u00f3n a los buscadores<\/h2>\n<p id=\"p-rc_8ca1c9ffba88f9bf-49\" data-path-to-node=\"37\"><span data-path-to-node=\"37,0\">Una vez generado y subido al servidor, conviene validar la sintaxis con las herramientas de esquema del W3C o la validaci\u00f3n autom\u00e1tica de Search Console<\/span><span data-path-to-node=\"37,2\">.<\/span><\/p>\n<p data-path-to-node=\"38\">Para comunicar su ubicaci\u00f3n a los rastreadores dispones de dos v\u00edas operativas (la tercera ha pasado a la historia):<\/p>\n<ol start=\"1\" data-path-to-node=\"39\">\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-50\" data-path-to-node=\"39,0,0\"><span data-path-to-node=\"39,0,0,0\">Paneles de administraci\u00f3n para webmasters: En Search Console (lo que antes llam\u00e1bamos Google Webmaster Tools) o Bing Webmaster Tools puedes registrar la ruta del sitemap<\/span><span data-path-to-node=\"39,0,0,2\">. Google solicita expresamente enviarlo solo cuando se genera por primera vez o sufre modificaciones<\/span><span data-path-to-node=\"39,0,0,4\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-51\" data-path-to-node=\"39,1,0\"><span class=\"\" data-path-to-node=\"39,1,0,0\">Directiva en robots.txt: A\u00f1adiendo la l\u00ednea <code data-path-to-node=\"39,1,0,0\" data-index-in-node=\"44\">Sitemap: https:\/\/www.ejemplo.es\/sitemap.xml<\/code><\/span><span data-path-to-node=\"39,1,0,2\">. En 2017 indicaba que deb\u00eda colocarse al final del archivo; en realidad es una directiva global que puede situarse en cualquier punto y de la que puedes incluir tantas l\u00edneas como sitemaps utilices<\/span><span class=\"\" data-path-to-node=\"39,1,0,4\">.<\/span><\/p>\n<\/li>\n<li>\n<p id=\"p-rc_8ca1c9ffba88f9bf-52\" data-path-to-node=\"39,2,0\"><span class=\"\" data-path-to-node=\"39,2,0,0\">La v\u00eda descartada: El antiguo mecanismo de <a href=\"https:\/\/google.com\/ping?sitemap=\" target=\"_blank\" rel=\"noopener\"><i data-path-to-node=\"39,2,0,0\" data-index-in-node=\"43\">ping<\/i><\/a>\u00a0 fue retirado por Google en diciembre de 2023, devolviendo un error 404<\/span><span class=\"\" data-path-to-node=\"39,2,0,2\">. Bing procedi\u00f3 de igual modo y sugiere la adopci\u00f3n de IndexNow, un protocolo sustentado por Bing, Yandex, Seznam y Naver (donde Google de momento no participa) para notificar cambios de URLs en tiempo real<\/span><span data-path-to-node=\"39,2,0,4\">.<\/span><\/p>\n<\/li>\n<\/ol>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>[Publicada el 15 de marzo de 2017. Revisada en octubre de 2026] Esta entrada arrastra sus a\u00f1os a las espaldas y algunas cifras y etiquetas se hab\u00edan quedado rancias. Mantengo lo que sigue en pie, corrijo lo que la realidad ha dejado desfasado y a\u00f1ado cambios que en 2017 ni exist\u00edan. Cuando algo sea distinto [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":1397,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[20,72,11],"tags":[40,60,61,42],"class_list":["post-357","post","type-post","status-publish","format-standard","has-post-thumbnail","category-arquitectura-de-la-informacion-web","category-arquitectura-de-los-sistemas-de-informacion-basados-en-la-web","category-posicionamiento-seo","tag-administrador-del-sitio","tag-posicionamiento","tag-seo","tag-servidores-web","entry"],"_links":{"self":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/comments?post=357"}],"version-history":[{"count":3,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/357\/revisions"}],"predecessor-version":[{"id":1398,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/357\/revisions\/1398"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media\/1397"}],"wp:attachment":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media?parent=357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/categories?post=357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/tags?post=357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}