@astrojs/sitemap
Esta integración de Astro genera un Sitemap basado en tus páginas al construir tu proyecto de Astro.
¿Por qué Astro Sitemap?
Un Sitemap es un archivo XML que describe todas las páginas, videos y archivos de tu sitio. Los motores de búsqueda como Google leen este archivo para rastrear tu sitio de manera más eficiente. Consulta el consejo de Google sobre los Sitemaps para obtener más información al respecto.
Se recomienda utilizar un archivo Sitemap para sitios grandes con múltiples páginas. Si no utilizas un Sitemap, la mayoría de los motores de búsqueda aún podrán listar las páginas de tu sitio, pero un Sitemap es una excelente manera de asegurarte de que tu sitio sea lo más amigable posible para los motores de búsqueda.
Con Astro Sitemap, no tienes que preocuparte por crear este archivo XML tú mismo: la integración Astro Sitemap rastreará tus rutas generadas estáticamente y creará el archivo sitemap, incluyendo rutas dinámicas como [...slug]
o src/pages/[lang]/[version]/info.astro
generado por getStaticPaths()
.
Esta integración no puede generar entradas de sitemap para rutas dinámicas en modo SSR.
Instalación
Instalación rápida
La herramienta de línea de comandos astro add
automatiza la instalación por ti. Ejecuta uno de los siguientes comandos en una nueva ventana de terminal. (Si no estás seguro de qué administrador de paquetes estás usando, ejecuta el primer comando.) Luego, sigue las indicaciones y escribe “y” en la terminal (que significa “sí”) para cada una.
Si tienes algún problema, no dudes en informarnos en GitHub y prueba los pasos de instalación manual a continuación.
Instalación manual
Primero, instala el paquete @astrojs/sitemap
usando tu administrador de paquetes. Si estás usando npm o no estás seguro, ejecuta esto en la terminal:
Luego, aplica esta integración a tu archivo astro.config.*
usando la propiedad integrations
:
Uso
@astrojs/sitemap
requiere una URL de despliegue o del sitio para su generación. Agrega la URL de tu sitio bajo astro.config.*
utilizando la propiedad site
. Esta URL debe comenzar con http:
o https:
.
Ten en cuenta que, a diferencia de otras opciones de configuración, site
se establece en el objeto defineConfig
raíz, en lugar de dentro de la llamada a sitemap()
.
Ahora, construye tu sitio para producción utilizando el comando astro build
. Encontrarás sitemap-index.xml
y sitemap-0.xml
en la carpeta dist/
(o tu directorio de salida personalizado si está configurado).
Si olvidas agregar la propiedad site
, recibirás una advertencia amigable al realizar la compilación y el archivo sitemap-index.xml
no se generará.
Después de verificar que los sitemaps se hayan construido, puedes agregarlos al elemento<head>
de tu sitio y al archivo robots.txt
para que los rastreadores los detecten.
Ejemplo de archivos generados para un sitio web de dos páginas
Configuración
Para configurar esta integración, pasa un objeto a la función sitemap()
en la configuración de astro.config.mjs
.
filter
Por defecto, todas las páginas se incluyen en tu sitemap. Al agregar una función filter
personalizada, puedes filtrar las páginas incluidas según su URL.
La función se llamará para cada página de tu sitio. El parámetro page
de la función es la URL completa de la página que se está considerando actualmente, incluyendo el dominio de tu site
. Devuelve true
para incluir la página en tu Sitemap y false
para omitirla.
Para filtrar varias páginas, agrega argumentos con las URL de destino.
customPages
En algunos casos, una página podría formar parte de tu sitio implementado pero no ser parte de tu proyecto de Astro. Si deseas incluir una página en tu sitemap que no sea creada por Astro, puedes utilizar esta opción.
entryLimit
El número máximo de entradas por archivo de sitemap. El valor predeterminado es 45000. Se crea un índice de sitemap y múltiples sitemaps si tienes más entradas. Consulta esta explicación sobre cómo dividir un sitemap grande.
changefreq, lastmod, y priority
Estas opciones corresponden a las etiquetas <changefreq>
, <lastmod>
, y <priority>
en la especificación XML del Sitemap.
Ten en cuenta que Google ignora las propiedades changefreq
y priority
.
Debido a las limitaciones de la API de Integración de Astro, esta integración no puede analizar el código fuente de una página específica. Esta opción de configuración puede establecer changefreq
, lastmod
y priority
de manera global para todo el sitio; consulta la siguiente opción serialize para ver cómo puedes establecer estos valores de forma específica para cada página.
serialize
Una función que se llama para cada entrada del Sitemap justo antes de escribir en el disco. Esta función puede ser asíncrona.
Recibe como parámetro un objeto SitemapItem
que puede tener estas propiedades:
url
(URL absoluta de la página). Esta es la única propiedad que se garantiza que estará presente enSitemapItem
.changefreq
lastmod
(Fecha en formato ISO, tipoString
)priority
links
.
La propiedad links
contiene una lista de LinkItem
que representa las páginas alternativas, incluida la página principal.
El tipo LinkItem
tiene dos campos: url
(la URL completamente calificada para la versión de esta página en el idioma especificado) y lang
(un código de idioma compatible dirigido por esta versión de la página).
La función serialize
debe devolver un objeto SitemapItem
, ya sea modificado o no.
El siguiente ejemplo muestra la capacidad de agregar propiedades específicas del Sitemap individualmente.
i18n
Para localizar un Sitemap, pasa un objeto a la opción i18n
.
Este objeto tiene dos propiedades requeridas:
defaultLocale
:String
. Su valor debe existir como una de las claves delocales
.locales
:Record<String, String>
, pares clave/valor. La clave se utiliza para buscar la parte del idioma en una ruta de página. El valor es un atributo de idioma y solo se permiten letras del alfabeto inglés y guiones.
Lee más sobre los atributos de idioma.
Lee más sobre la localización.
El sitemap resultante tiene el siguiente aspecto:
Ejemplos
- El sitio web oficial de Astro utiliza Astro Sitemap para generar su sitemap.
- ¡Explora proyectos con Astro Sitemap en GitHub para más ejemplos!
Solución de problemas
Para obtener ayuda, consulta el canal de #support
en Discord. ¡Nuestros amables miembros del equipo de soporte están aquí para ayudar!
También puedes consultar nuestra Documentación de Integración de Astro para obtener más información sobre las integraciones.
Contribuyendo
Este paquete es mantenido por el equipo central de Astro. ¡Estás invitado a enviar un problema o PR!
Changelog
Consulta el CHANGELOG.md para un historial de cambios en esta integración.