2011-02-17 32 views
1

我的網站有動態內容,正在創建新鏈接。asp.net中的sitemaps.xml mvc

我的數據庫有一個表,其中幾乎包含所有添加的網址。

所以我的問題是如何importnt是我有sitemaps.xml,也有一個簡單的方法來構建它,以便當新的鏈接生成時,我可以標記它到一個sitemap.xml文件的末尾?

回答

2

您可以使用LINQ to XML從數據庫創建一個XML站點地圖,然後從一個動作返回站點地圖返回Content(document.ToString(), "text/xml")

2

抓取工具能夠更快,更準確地抓取您的網站,這一點非常重要。

您可以創建一個控制器,說siteMapController和指數添加以下

public ActionResult Index() { 
     var xmlString = 
      "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">"; 

     xmlString += 
       "<url>" + 
       "<loc>Your site</loc>" + 
       "<changefreq>weekly</changefreq>" + 
       "<priority>0.6</priority>" + 
      "</url>" + 
      "<url>" + 
        "<loc>Static Link of you site</loc>" + //you can add as many you want 
         "<changefreq>weekly</changefreq>" + 
         "<priority>0.6</priority>" + 
        "</url>" + 
        "<url>"; 


      //Dynamic links 
      xmlString += "<url>" + 
         "<loc>Link of new item"</loc>" + 
         "<lastmod>" + DateTime.Now.ToString("yyyy-MM-dd") + "</lastmod>" + 
         "<changefreq>daily</changefreq>" + 
         "<priority>0.8</priority>" + 
         "</url>"; 
     } 
     xmlString += "</urlset>"; 
     ViewData["siteMap"] = xmlString; 
     return View(); 
    } 

保存在服務器上的XML,並通過此鏈接

https://www.google.com/webmasters/tools/home?hl=en

希望幫助發佈網站地圖

+0

如果您的網站上有20,000個動態生成的網頁,該怎麼辦?如果你將它們都包含在網站地圖中,或者Google會忽略這麼大的條目。另外,您通常應該避免通過字符串連接來構建XML。直接寫入響應流或在最糟糕的情況下使用XML API或StringBuilder。 – 2011-02-17 11:05:04

+0

好吧,這會給我一個XML文件在http://www.mysite.com/sitemap/?問題是,當新創建的鏈接添加到數據庫我必須重新渲染整個XML文件? – raklos 2011-02-17 11:08:03