2009-05-19 14 views

risposta

5

Il modo più semplice sarebbe quella di utilizzare uno qualsiasi di un certo numero di costruttori sitemap liberi là fuori - saranno scansione del tuo sito, seguire i link, e generare un file sitemap XML per tu.

Here's one for example

3

Ecco un post che potrebbe darvi qualche idea. Fondamentalmente genera una mappa del sito dai valori del percorso.

22

Ho utilizzato Mike Brind's Sitemap code, con una piccola modifica.

È necessario aggiungere lo XNamespace a ogni XElement, altrimenti Google sputa il manichino.

Ecco la mia versione:

public ContentResult Index() 
     { 
      XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
      const string url = "http://www.website.com/controller/action/{0}"; 
      var items = _db.DataAccessHere(); 
      var sitemap = new XDocument(
       new XDeclaration("1.0", "utf-8", "yes"), 
       new XElement(ns + "urlset", 
        from i in items 
        select 
        //Add ns to every element. 
        new XElement(ns + "url", 
         new XElement(ns + "loc", string.Format(url, i.ItemID)), 
          new XElement(ns + "lastmod", String.Format("{0:yyyy-MM-dd}", i.DateAddedUTC)), 
         new XElement(ns + "changefreq", "monthly"), 
         new XElement(ns + "priority", "0.5") 
        ) 
        ) 
       ); 
      return Content(sitemap.ToString(), "text/xml"); 
     } 

credito a Mike per la pubblicazione dell'articolo e codice originale.

+1

Ta, Bel pezzo di codice. Potresti voler aggiungere un altro XElement del nodo del sito root. – Junto

+0

ottimo e semplice codice, l'ho usato e ho creato http://www.gprprojecten.nl/Home/Sitemap con l'aggiunta che @Junto ha già proposto –

+0

Grazie - ancora - a Mike. Il suo sito Web è http://www.mikesdotnetting.com ei suoi articoli sono semplici da capire e potenti. E no, non ho alcun legame con lui a parte questo voglio dire grazie! –

2

quindi ecco la cosa, utilizzando i generatori creeremo un collegamento per "tutto" nel tuo sito. Quindi se hai, diciamo un sito di carte, e hai centinaia di migliaia di schede, ognuna con il proprio link e tutto, probabilmente vedrai la stessa quantità di link. Se lo vuoi, allora i generatori di sitemap xml sono la strada da percorrere.

Ma se volete un po 'personalizzato, si può fare questi:

Lista tutte le principali sezioni dei vostri siti. Questo è facile da fare considerando che la maggior parte degli MVC utilizza la sorta di "clean URL". un po 'come "site.com/items/phones"

Creare un documento XML, a seconda della lingua che si sta utilizzando.

Come minimo, si dovrebbe avere un documento come questo:

<?xml version="1.0" encoding="utf-8"?> 
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
     <url> 
     <loc>http://dragonflysco.com/catalog/finishings/19</loc> 
     </url> 
     <!-- more here --> 
    </urlset> 

Per la struttura più avanzata, controllare questo: http://www.google.com/support/webmasters/bin/answer.py?answer=183668

5

spina auto Shameless: Ho creato una libreria chiamata SimpleMvcSitemap dopo aver strano problemi con MvcSiteMapProvider sulla produzione. Potete servire i file sitemap da qualsiasi metodo di azione senza alcuna configurazione:

public class SitemapController : Controller 
{ 
    public ActionResult Index() 
    { 
     List<SitemapNode> nodes = new List<SitemapNode> 
     { 
      new SitemapNode(Url.Action("Index","Home")), 
      new SitemapNode(Url.Action("About","Home")), 
      //other nodes 
     }; 

     return new SitemapProvider().CreateSitemap(nodes); 
    } 
} 

Supporta inoltre tutte le Google Sitemap extensions disponibili.

+0

Il progetto SimpleMVCSutemap creerà dinamicamente il file Sitemap nel progetto dopo l'esecuzione di questa riga 'return new SitemapProvider(). CreateSitemap (HttpContext, nodes);'? – Thomas

+0

@Thomas è generato su ogni richiesta che chiama questo metodo di azione. Puoi salvarlo in un file e servirlo come contenuto se i tuoi link sono statici. –