基于C# 網(wǎng)站地圖制作
2024-09-07 17:05:16
供稿:網(wǎng)友
1、 我們的網(wǎng)站是用C#開發(fā)的,我們采用數(shù)據(jù)庫存儲所有文章信息。所以我們的文章都是動態(tài)地從數(shù)據(jù)庫中提取出來的。這點(diǎn)很不利于蜘蛛的順藤摸瓜。
2、 這點(diǎn)嘛,嘿嘿,就有些勉強(qiáng)了。做個網(wǎng)站地圖,可以讓用戶對敝網(wǎng)站的內(nèi)容一目了然,能起到很好的導(dǎo)航作用。
鑒于上述原因,于是乎,俺就決定為俺地“赤兔英語網(wǎng)”做一個網(wǎng)站地圖。由于Google等搜索引擎所需的網(wǎng)站地圖必須是XML文件,所以俺決定做網(wǎng)頁形式和XML形式兩種網(wǎng)站地圖。我們的網(wǎng)站是用C#開發(fā)的,當(dāng)然是使用C#語言來編寫俺地網(wǎng)站地圖了,赫赫。
首先,我們來看看,我們的網(wǎng)站地圖該怎么生成,怎么展現(xiàn)。簡單思考之后,我決定這樣做。網(wǎng)站首頁的菜單中添加“網(wǎng)站地圖”選項,其鏈接著網(wǎng)頁形式的網(wǎng)站地圖,頁面名字為sitemap.html;首頁的底部也添加鏈接“網(wǎng)站地圖”,其鏈接著XML格式的網(wǎng)站地圖,頁面名字為sitemap.xml。這兩個頁面生成程序在后臺添加。設(shè)置一個按鈕,管理員在一段時間內(nèi)點(diǎn)擊該按鈕,直接生成這兩個文件,放在網(wǎng)站的根目錄下,供客戶端隨時調(diào)用。
下面,我們來看看生成網(wǎng)站地圖的代碼的具體實(shí)現(xiàn)。為了文章可讀性,我們從頂向下來對code實(shí)現(xiàn)過程做以介紹。
一、網(wǎng)站地圖的頂層設(shè)計
頂層的網(wǎng)站地圖生成按鈕的code為:
protected void BtnGenerateSitemap_Click(object sender, EventArgs e)
{
createHtmlSitemap();
createXMLSitemap();
WebUtility.ResponseScript("網(wǎng)站地圖生成完畢!",0);
}
上面code一目了然,createHtmlSitemap()用來生成html網(wǎng)站地圖,createXMLSitemap()用來生成XML網(wǎng)站地圖。
二、Html網(wǎng)站地圖的生成
我們先介紹Html網(wǎng)站地圖的生成。createHtmlSitemap()的code如下:
public void createHtmlSitemap()
{
FileInfo HtmlFile = null;
StreamWriter WriteHtmlFile = null;
string FilePath = Server.MapPath("sitemap.html");//獲取html文件路徑及名稱
HtmlFile = new FileInfo(FilePath);//創(chuàng)建html文件
WriteHtmlFile = HtmlFile.CreateText();
WriteHtmlFile.WriteLine("<html>");
WriteHtmlFile.WriteLine("<head>");
WriteHtmlFile.WriteLine("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>");
WriteHtmlFile.WriteLine("<title>赤兔英語網(wǎng) 網(wǎng)站地圖</title>");
WriteHtmlFile.WriteLine("</head>");
WriteHtmlFile.WriteLine("<body>");
getHtmlSitemapData(WriteHtmlFile);
WriteHtmlFile.WriteLine("</body>");
WriteHtmlFile.WriteLine("</html>");
WriteHtmlFile.Close();
}
上述code創(chuàng)建了html文件sitemap.html,并使用對象StreamWriter書寫了sitemap.html。函數(shù)getHtmlSitemapData(WriteHtmlFile)完成了sitemap.html正文部分的組織。
需要注意的是,如果網(wǎng)站地圖中有中文,必須將charset設(shè)置為UTF-8。否則中文不能正常顯示。