Integrazione con PrestaSitemapBundle
Sonata Extra si integra con PrestaSitemapBundle per generare un file sitemap.xml. La generazione copre immagini, articoli e pagine di contenuto dell’applicazione. Il processo è completamente automatizzato e include il supporto per i collegamenti multilingue.
Estendere la sitemap
Gli utenti che desiderano personalizzare ulteriormente la mappa del sito, in particolare aggiungendo risorse supplementari dai controller Symfony, sono incoraggiati a consultare la documentazione ufficiale del « PrestaSitemapBundle ». Questa documentazione offre istruzioni dettagliate ed esempi su come utilizzare efficacemente il bundle per estendere le funzionalità della mappa del sito nelle applicazioni basate su Symfony.
La documentazione ufficiale permette in particolare di:
- Comprendere le funzionalità principali del "PrestaSitemapBundle".
- Imparare ad aggiungere URL o risorse personalizzate alla mappa del sito.
- Implementare configurazioni adatte ai siti più complessi.
Configurazione di base
Prendiamo un sito disponibile in quattro lingue: https://my-website.dev/{en,fr,es,it}. Ogni locale dispone della propria versione della mappa del sito.
Per un volume di contenuti moderato, puoi utilizzare la generazione al volo di PrestaSitemapBundle. Adatta i parametri al tuo progetto:
# 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
È tutto.
Con un grande volume di articoli, preferite una generazione pianificata su disco.
Posizionate i file generati in una cartella pubblica dedicata: public/sitemaps/Ogni lingua avrà la sua rispettiva cartella quindi:
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
Rimuovere la rotta se si disattiva la generazione al volo:
# config/routes.yaml
#presta_sitemap:
# resource: "@PrestaSitemapBundle/config/routing.yml"
Collegati al tuo shell ed esegui i comandi di generazione. PrestaSitemapBundle espone già il comando di generazione; basta fornirgli il contesto HTTP e la directory di output:
'SYMFONY_HTTP_CONTEXT_URL=""https://my-website.dev/ensymfony console presta:sitemaps:dump public/sitemaps/en/ --base-url https://my-website.dev/en `
Declina quindi il comando per ogni locale in uno script automatizzabile:
#!/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
Esegui questo script con cron o il tuo pianificatore abituale. Ecco il risultato:
❯ 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
L'ultima cosa è creare il tuo file robots.txt per puntare ai tuoi sitemap.
# 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
Controllare il risultato generato
Dopo la generazione, controlla il codice HTTP, la validità XML, gli URL canonici e i link hreflang. Il file robots.txt deve fare riferimento all'URL pubblico della sitemap, senza bloccare le risorse necessarie al rendering.