2009-05-19 23 views

Respuesta

5

La forma más fácil sería utilizar cualquiera de una serie de constructores mapa libres por ahí - van a rastrear su sitio, seguir los vínculos, y generar un archivo de mapa del sitio XML para tú.

Here's one for example

3

Aquí hay una post que pueden dar algunas ideas. Básicamente, genera un mapa del sitio a partir de valores de ruta.

22

He usado Mike Brind's Sitemap code, con un pequeño cambio.

Debe agregar el XNamespace a cada XElement, de lo contrario, Google escupe el maniquí.

aquí está mi versión:

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"); 
     } 

Gracias a Mike por publicar el artículo original y el código.

+1

Ta, Buena pieza de código. Es posible que desee agregar otro XElement del nodo del sitio raíz. – Junto

+0

código grande y simple, lo usé y creé http://www.gprprojecten.nl/Home/Sitemap con la adición de que @Junto ya propuso –

+0

Gracias - nuevamente - a Mike. Su sitio web está en http://www.mikesdotnetting.com, y sus artículos son simples de entender y poderosos. Y no, no tengo ninguna conexión con él, aparte de eso, quiero agradecerles. –

2

así que aquí está la cosa, usar generadores creará un enlace para "todo" en su sitio. Entonces, si tiene, digamos un sitio de tarjetas, y tiene como cien mil elementos de tarjeta, cada uno con su propio enlace y todo, probablemente verá la misma cantidad de enlaces. Si lo desea, los generadores de sitemap xml son el camino a seguir.

Pero si quieres un poco personalizado, que puede hacer las siguientes:

Lista de las principales secciones de sus sitios. Esto es fácil de hacer teniendo en cuenta que la mayoría de los MVC utilizan el tipo de "URL limpias". un poco como "site.com/items/phones"

Crea un documento XML, dependiendo del idioma que estés utilizando.

Como mínimo, usted debe tener un documento como este:

<?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> 

Para más avanzada estructura, mira esto: http://www.google.com/support/webmasters/bin/answer.py?answer=183668

5

enchufe auto Shameless: He creado una biblioteca llamada SimpleMvcSitemap después de haber raro problemas con MvcSiteMapProvider en la producción. Puede servir archivos mapa de cualquier método de acción sin ningún tipo de configuración:

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); 
    } 
} 

También es compatible con todos los Google Sitemap extensions disponible.

+0

El proyecto SimpleMVCSutemap creará el archivo del mapa del sitio dinámicamente en el proyecto después de la ejecución de esta línea 'return new SitemapProvider(). CreateSitemap (HttpContext, nodes);'? – Thomas

+0

@Thomas se genera en cada solicitud que llama a este método de acción. Puede guardarlo en un archivo y publicarlo como contenido si sus enlaces son estáticos. –

Cuestiones relacionadas