[SEO]讓你的Asp.Net網站自動產生Sitemap——XmlSitemap

來源:互聯網
上載者:User

首先我要說明:Asp.Net內建的Sitemap與這裡講的Sitemap是完全不同的,Asp.Net中的Sitemap主要用於給使用者導航,而這裡說的Sitemap是用來給搜尋引擎爬蟲指路。

還是直接來看看官方解釋吧:

什麼是Sitemap?

Sitemap 可方便管理員通知搜尋引擎他們網站上有哪些可供抓取的網頁。最簡單的 Sitepmap 形式,就是 XML 檔案,在其中列出網站中的網址以及關於每個網址的其他中繼資料(上次更新的時間、更改的頻率以及相對於網站上其他網址的重要程度為何等),以便搜尋引擎可以更加智能地抓取網站。

網路抓取工具通常會通過網站內部和其他網站上的連結尋找網頁。Sitemap 會提供此資料以便允許支援 Sitemap 的抓取工具抓取 Sitemap 提供的所有網址,並瞭解使用相關中繼資料的網址。使用 Sitemap 協議並不能保證網頁會包含在搜尋引擎中,但可向網路抓取工具提供一些提示以便它們更有效地抓取網站。

Sitemap 0.90 是依據創意公用授權-相同方式共用 (Attribution-ShareAlike Creative Commons License) 的條款提供的,並被廣泛採用,受 Google、Yahoo! 和 Microsoft 在內的眾多廠商的支援。

引自Sitemaps.org:http://www.sitemaps.org/zh_CN/

綜上所述,提供Sitemap是輔助搜尋引擎爬蟲收錄網站的一種手段,沒有Sitemap你的網站一樣會被收錄,而有了Sitemap則會被收錄的更全面、準確。

它除了提供網址外,最重要的就是提供了頁面的更新時間戳記,以及網站側重點和更新回訪頻率建議,使得搜尋引擎能更精確地把握你的網站。

如何?自動產生Sitemap?

現成的產生器已有不少:

http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators

http://www.google.com/support/webmasters/bin/answer.py?answer=34634

不過在Asp.Net中,沒有官方的產生工具,搜尋“Asp.Net Sitemap”找到的也都是大把的Asp.Net內建的Sitemap功能介紹網頁。

故此,我希望自己來實現一個Asp.Net的Sitemap產生工具。並且我希望這個工具是可以和Asp.Net同步互動進行資料更新的,以保障資料的時效性;而其他大多數產生器都像是一個私人爬蟲,你需要手動放出它來爬遍你的網站,以產生整站的Sitemap,我不喜歡這樣。

XmlSitemap

這就是我實現的Sitemap產生工具,簡單講一下實現方式:

  1. 通過資料庫儲存網站、頁面集合、頁面資料:
  2. 在Asp.Net網站中,增刪改資料時,調用網站地圖公開的方法更新資料庫資料。
  3. 通過Ashx輸出XML格式的Sitemap供搜尋引擎爬蟲讀取。

在文章末尾處我將共用此項目的下載連結,接下來將講一下此項目的使用方法。

如何部署?

我將提供以下檔案用於在現有Asp.Net網站中部署此功能:

首先要引用XmlSitemap.dll。

然後通過“添加現有項”將XMLSiteMap.ashx.cs及XMLSiteMap.ashx添加到項目中。

再通過“添加現有項”將SiteMap.mdf添加到項目的App_Data目錄中。

在Web.Config中指定SiteMap.mdf的資料庫連接字串:

<connectionStrings>

    <add name="MySitemapDataConnstr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\SkyD\Documents\Visual Studio 2008\Projects\實驗室\WebApplication10\WebApplication10\App_Data\SiteMap.mdf';Integrated Security=True;User Instance=True"/>

</connectionStrings>

在項目中新增一個Global.asax檔案(如果之前沒建立此檔案的話),在其Application_Start中進行初始化:

其中藍色高亮部分是上文中在Web.Config中指定的SiteMap.mdf的資料庫連接字串;

黃色高亮部分是你的網站名稱,在每次提交資料時都將用到此字串;

綠色高亮部分是你的這個網站的網址,每次新增的網址資料都必須位於此網址網域名稱下。

如何使用?

我們將通過一個按鈕來類比添加資料的操作:

protected void Button1_Click(object sender, EventArgs e)

{

    var id=Guid.NewGuid();

    網站地圖.添加頁面("MySite", id, Path.Combine("http://www.MySite.com/", "Page.aspx?ID=" + id), 0.5, 更新頻率.每天);

}

注意:這裡僅僅是用來測試,所以臨時產生了一個Guid傳入網站地圖,而在實際使用時,應當以你的原資料條目的Guid傳入,因為你在之後很可能還會對其進行更新、刪除操作,如果同時要反映到網站地圖中的話,你就必須還以它的Guid作為標識,才能找到它。

當你頻繁點擊這個按鈕後,網站地圖中就會新增了多條資料,你可以通過訪問XmlSiteMap.ashx?Site=MySite查看當前的頁面集合列表:

其中的Url地址是頁面集合的網址,由於頁面資料量沒有達到頁面集合所容納的上限,所以目前就只有一個頁面集合。

訪問頁面集合的網址:

 

這裡就是每個頁面的詳細地址及相關資訊列表。

除了添加資料之外,還有更新、刪除等方法,由雩都是中文寫的代碼,易於理解,就不在此一一示範了:

資源下載

部署檔案:http://www.uushare.com/user/icesee/file/1893271

樣本網站項目原始碼:http://www.uushare.com/user/icesee/file/1893269

XmlSitemap原始碼:http://www.uushare.com/user/icesee/file/1893270

本文的XPS版本:http://www.uushare.com/user/icesee/file/1895946

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.