Perchè avere la sitemap e come costruirla in Django

In questo post vediamo come configurare la "sitemap" XML nel nostro sito Django per esporre tutte le pagine utili ai motori di ricerca

La sitemap XML è una pagina (scritta appunto in XML) che raccoglie in maniera gerarchica tutte le pagine (e relativi link) del proprio sito web e le rende disponibili ai crawler dei motori di ricerca in modo che possano essere indicizzate nel miglior modo possibile.

La sitemap XML è stata introdotta da Google nel 2005 come protocollo per l'indicizzazione delle pagine dei siti web nello stesso motore di ricerca. Successivamente, tale protocollo, è stato adottato e supportato anche da altri motori di ricerca (Yahoo e Bing).

Predisporre una sitemap XML sul proprio sito ha notevoli vantaggi:

  1. controllare quali pagina vogliamo effettivamente indicizzare
  2. esporre anche le pagine che risultano isolate (non referenziate da nessun'altra pagina del sito)
  3. indicizzare tutte le nostre pagine anche se il sito ha pochi link di ingresso.

Django è dotato di un framework di alto livello per la generazione della sitemap che permette di creare con facilità il file XML che verrà letto dai crawler dei motori di ricerca.

Tale framework è definito direttamente in Django (già dalla versione 1.0) nella app 'django.contrib.sitemaps' (quì si può leggere il tutorial ufficiale per realizzare la propria sitemap in django).

Poniamoci in un caso specifico: produrre un file sitemap.xml nel quale siano esposte le url dei soli elementi visualizzabili (pagine dei compositori, delle opere e dei negozi rivenditori).

Seguendo il tutorial di cui sopra, aggiungiamo la app 'django.contrib.sitemaps' nelle INSTALLED_APPS (nel file settings.py di django) e nel nostro file urls.py definiamo l'url al quale il crawler può trovare la sitemap del sito:

sitemaps = {     'composers': ComposersSitemap,     'operas': OperasSitemap,     'publications': PublicationsSitemap,     'stores': StoresSitemap } extrapatterns += patterns('', ...     (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap',      {'sitemaps': sitemaps}) )

Come si può notare la nostra sitemap si compone di varie sezioni (composers, operas, publications, strores); ognuna di queste è una Sitemap class che decide quali sono gli url da esporre e quali eventualmente quelli da nascondere all'indicizzazione del motore di ricerca.

from django.contrib.sitemaps import Sitemap
...
class OperasSitemap(Sitemap):
     changefreq = "never"
     priority = 0.5
     def items(self):
          return [p.product for p in Opera.objects.all()]

 

Una cosa molto simpatica (ma anche molto utile) che si può aggiungere alla propria sitemap in django è il "Pinging Google"; con questo metodo si può fare in modo da "scomodare" Google ogni qual volta viene aggiunto un nuovo elemento che confluirà nella sitemap in modo tale da reindicizzarlo subito.

Ovviamente sarebbe da preferire l'utilizzo di un command django (gestito da un cron giornaliero o settimanale) che effettui un ping verso Google e lo esorti ad indicizzare le url del nostro sito django.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus