[SEO]讓你的Asp.Net網(wǎng)站自動(dòng)生成Sitemap——XmlSitemap

首先我要說(shuō)明:Asp.Net內(nèi)置的Sitemap與這里講的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于給用戶導(dǎo)航,而這里說(shuō)的Sitemap是用來(lái)給搜索引擎爬蟲(chóng)指路。

還是直接來(lái)看看官方解釋吧:

什么是Sitemap?

Sitemap 可方便管理員通知搜索引擎他們網(wǎng)站上有哪些可供抓取的網(wǎng)頁(yè)。最簡(jiǎn)單的 Sitepmap 形式,就是 XML 文件,在其中列出網(wǎng)站中的網(wǎng)址以及關(guān)于每個(gè)網(wǎng)址的其他元數(shù)據(jù)(上次更新的時(shí)間、更改的頻率以及相對(duì)于網(wǎng)站上其他網(wǎng)址的重要程度為何等),以便搜索引擎可以更加智能地抓取網(wǎng)站。

網(wǎng)絡(luò)抓取工具通常會(huì)通過(guò)網(wǎng)站內(nèi)部和其他網(wǎng)站上的鏈接查找網(wǎng)頁(yè)。Sitemap 會(huì)提供此數(shù)據(jù)以便允許支持 Sitemap 的抓取工具抓取 Sitemap 提供的所有網(wǎng)址,并了解使用相關(guān)元數(shù)據(jù)的網(wǎng)址。使用 Sitemap?協(xié)議并不能保證網(wǎng)頁(yè)會(huì)包含在搜索引擎中,但可向網(wǎng)絡(luò)抓取工具提供一些提示以便它們更有效地抓取網(wǎng)站。

Sitemap 0.90 是依據(jù)創(chuàng)意公用授權(quán)-相同方式共享?(Attribution-ShareAlike Creative Commons License) 的條款提供的,并被廣泛采用,受 Google、Yahoo! 和 Microsoft 在內(nèi)的眾多廠商的支持。

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

綜上所述,提供Sitemap是輔助搜索引擎爬蟲(chóng)收錄網(wǎng)站的一種手段,沒(méi)有Sitemap你的網(wǎng)站一樣會(huì)被收錄,而有了Sitemap則會(huì)被收錄的更全面、準(zhǔn)確。

它除了提供網(wǎng)址外,最重要的就是提供了頁(yè)面的更新時(shí)間戳,以及網(wǎng)站側(cè)重點(diǎn)和更新回訪頻率建議,使得搜索引擎能更精確地把握你的網(wǎng)站。

如何實(shí)現(xiàn)自動(dòng)生成Sitemap?

現(xiàn)成的生成器已有不少:

https://www.xiaoyuani.com/

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

不過(guò)在Asp.Net中,沒(méi)有官方的生成工具,搜索“Asp.Net Sitemap”找到的也都是大把的Asp.Net內(nèi)置的Sitemap功能介紹網(wǎng)頁(yè)。

故此,我希望自己來(lái)實(shí)現(xiàn)一個(gè)Asp.Net的Sitemap生成工具。并且我希望這個(gè)工具是可以和Asp.Net同步交互進(jìn)行數(shù)據(jù)更新的,以保障數(shù)據(jù)的時(shí)效性;而其他大多數(shù)生成器都像是一個(gè)私人爬蟲(chóng),你需要手動(dòng)放出它來(lái)爬遍你的網(wǎng)站,以生成整站的Sitemap,我不喜歡這樣。

XmlSitemap

這就是我實(shí)現(xiàn)的Sitemap生成工具,簡(jiǎn)單講一下實(shí)現(xiàn)方式:

通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)站點(diǎn)、頁(yè)面集合、頁(yè)面數(shù)據(jù):

請(qǐng)點(diǎn)擊輸入圖片描述

在Asp.Net網(wǎng)站中,增刪改數(shù)據(jù)時(shí),調(diào)用站點(diǎn)地圖公開(kāi)的方法更新數(shù)據(jù)庫(kù)數(shù)據(jù)。

通過(guò)Ashx輸出XML格式的Sitemap供搜索引擎爬蟲(chóng)讀取。

在文章末尾處我將共享此項(xiàng)目的下載鏈接,接下來(lái)將講一下此項(xiàng)目的使用方法。

如何部署?

我將提供以下文件用于在現(xiàn)有Asp.Net網(wǎng)站中部署此功能:

請(qǐng)點(diǎn)擊輸入圖片描述

首先要引用XmlSitemap.dll。

然后通過(guò)“添加現(xiàn)有項(xiàng)”將XMLSiteMap.ashx.cs及XMLSiteMap.ashx添加到項(xiàng)目中。

再通過(guò)“添加現(xiàn)有項(xiàng)”將SiteMap.mdf添加到項(xiàng)目的App_Data目錄中。

在Web.Config中指定SiteMap.mdf的數(shù)據(jù)庫(kù)連接字串:

<connectionStrings>

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

</connectionStrings>

在項(xiàng)目中新增一個(gè)Global.asax文件(如果之前沒(méi)創(chuàng)建此文件的話),在其Application_Start中進(jìn)行初始化:

請(qǐng)點(diǎn)擊輸入圖片描述

其中藍(lán)色高亮部分是上文中在Web.Config中指定的SiteMap.mdf的數(shù)據(jù)庫(kù)連接字串;

黃色高亮部分是你的網(wǎng)站名稱,在每次提交數(shù)據(jù)時(shí)都將用到此字符串;

綠色高亮部分是你的這個(gè)站點(diǎn)的網(wǎng)址,每次新增的網(wǎng)址數(shù)據(jù)都必須位于此網(wǎng)址域名下。

如何使用?

我們將通過(guò)一個(gè)按鈕來(lái)模擬添加數(shù)據(jù)的操作:

protected?void?Button1_Click(object?sender,?EventArgs?e)

{

var?id=Guid.NewGuid();

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

}

注意:這里僅僅是用來(lái)測(cè)試,所以臨時(shí)生成了一個(gè)Guid傳入站點(diǎn)地圖,而在實(shí)際使用時(shí),應(yīng)當(dāng)以你的原數(shù)據(jù)條目的Guid傳入,因?yàn)槟阍谥蠛芸赡苓€會(huì)對(duì)其進(jìn)行更新、刪除操作,如果同時(shí)要反映到站點(diǎn)地圖中的話,你就必須還以它的Guid作為標(biāo)識(shí),才能找到它。

當(dāng)你頻繁點(diǎn)擊這個(gè)按鈕后,站點(diǎn)地圖中就會(huì)新增了多條數(shù)據(jù),你可以通過(guò)訪問(wèn)XmlSiteMap.ashx?Site=MySite查看當(dāng)前的頁(yè)面集合列表:

請(qǐng)點(diǎn)擊輸入圖片描述

其中的Url地址是頁(yè)面集合的網(wǎng)址,由于頁(yè)面數(shù)據(jù)量沒(méi)有達(dá)到頁(yè)面集合所容納的上限,所以目前就只有一個(gè)頁(yè)面集合。

訪問(wèn)頁(yè)面集合的網(wǎng)址:

請(qǐng)點(diǎn)擊輸入圖片描述

這里就是每個(gè)頁(yè)面的詳細(xì)地址及相關(guān)信息列表。

除了添加數(shù)據(jù)之外,還有更新、刪除等方法,由于都是中文寫的代碼,易于理解,就不在此一一演示了:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容