Integración con PrestaSitemapBundle
Sonata Extra se integra con PrestaSitemapBundle para generar un archivo sitemap.xml. La generación cubre las imágenes, los artículos y las páginas de contenido de la aplicación. El proceso es totalmente automatizado e incluye el soporte de enlaces multilingües.
Ampliar el sitemap
Los usuarios que deseen personalizar más el mapa del sitio, especialmente añadiendo recursos adicionales desde los controladores de Symfony, son alentados a consultar la documentación oficial del « PrestaSitemapBundle ». Esta documentación ofrece instrucciones detalladas y ejemplos sobre cómo usar eficazmente el bundle para ampliar las funcionalidades del mapa del sitio en aplicaciones basadas en Symfony.
La documentación oficial permite notamment de:
- Comprender las funcionalidades principales del "PrestaSitemapBundle".
- Aprender a agregar URL o recursos personalizados al mapa del sitio.
- Implementar configuraciones adaptadas a sitios más complejos.
Configuración básica
Tomemos un sitio disponible en cuatro idiomas: https://my-website.dev/{en,fr,es,it}. Cada localidad dispone de su propia versión del sitemap.
Para un volumen de contenido moderado, puede utilizar la generación en tiempo real de PrestaSitemapBundle. Adapte los parámetros a su proyecto:
# config/packages/presta_sitemap.yaml
presta_sitemap:
defaults:
priority: 1
changefreq: daily
lastmod: now
# config/routes.yaml
presta_sitemap:
resource: "@PrestaSitemapBundle/config/routing.yml"
# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/en/sitemap.xml
Sitemap: https://my-website.dev/fr/sitemap.xml
Sitemap: https://my-website.dev/es/sitemap.xml
Sitemap: https://my-website.dev/it/sitemap.xml
Eso es todo.
Con un gran volumen de artículos, prefiera una generación planificada en disco.
Coloque los archivos generados en un directorio público dedicado: public/sitemaps/Cada idioma tendrá su propio directorio, por lo tanto:
public/sitemaps/en
public/sitemaps/fr
public/sitemaps/es
public/sitemaps/it
# config/packages/presta_sitemap.yaml
presta_sitemap:
defaults:
priority: 1
changefreq: daily
lastmod: now
Elimine la ruta si desactiva la generación en tiempo real:
# config/routes.yaml
#presta_sitemap:
# resource: "@PrestaSitemapBundle/config/routing.yml"
Conéctese a su shell y ejecute los comandos de generación. PrestaSitemapBundle ya expone el comando de generación; solo necesita proporcionarle el contexto HTTP y el directorio de salida:
'SYMFONY_HTTP_CONTEXT_URL=""https://my-website.dev/ensymfony console presta:sitemaps:dump public/sitemaps/en/ --base-url https://my-website.dev/en `
Luego declina el comando para cada configuración regional en un script automatizable:
#!/bin/sh
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/en" symfony console presta:sitemaps:dump public/sitemaps/en/ --base-url https://my-website.dev/sitemaps/en
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/fr" symfony console presta:sitemaps:dump public/sitemaps/fr/ --base-url https://my-website.dev/sitemaps/fr
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/es" symfony console presta:sitemaps:dump public/sitemaps/es/ --base-url https://my-website.dev/sitemaps/es
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/it" symfony console presta:sitemaps:dump public/sitemaps/it/ --base-url https://my-website.dev/sitemaps/it
Ejecute este script con cron o su programador habitual. Aquí está el resultado:
❯ tree public/sitemaps/ -l
public/sitemaps/
├── en
│ ├── sitemap.Articles.xml
│ ├── sitemap.Medias.xml
│ ├── sitemap.Pages.xml
│ └── sitemap.xml
├── es
│ ├── sitemap.Medias.xml
│ ├── sitemap.Pages.xml
│ └── sitemap.xml
├── fr
│ ├── sitemap.Articles.xml
│ ├── sitemap.Medias.xml
│ ├── sitemap.Pages.xml
│ └── sitemap.xml
└── it
├── sitemap.Medias.xml
├── sitemap.Pages.xml
└── sitemap.xml
Lo último es crear su archivo robots.txt para apuntar a sus sitemaps.
# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/sitemaps/en/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/fr/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/es/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/it/sitemap.xml
Controlar el resultado generado
Después de la generación, controle el código HTTP, la validez XML, las URL canónicas y los enlaces hreflang. El archivo robots.txt debe referenciar la URL pública del sitemap, sin bloquear los recursos necesarios para la renderización.