详解C# 网站地图设计
发布时间:2023-06-05 15:30:21 所属栏目:语言 来源:未知
导读: 网站地图相信大家都是比较熟悉的,不仅能为用户提供方便的浏览,而且能为搜索引擎提供很好的抓取,今天频道小编与大家分享的是详解C# 网站地图制作,一起来跟着小编来学习吧!
详解C
详解C
网站地图相信大家都是比较熟悉的,不仅能为用户提供方便的浏览,而且能为搜索引擎提供很好的抓取,今天频道小编与大家分享的是详解C# 网站地图制作,一起来跟着小编来学习吧! 详解C# 网站地图制作 1、 我们的网站是用C#开发的,我们采用数据库存储所有文章信息。所以我们的文章都是动态地从数据库中提取出来的。这点很不利于蜘蛛的顺藤摸瓜。 2、 这点嘛,嘿嘿,就有些勉强了。做个网站地图,可以让用户对敝网站的内容一目了然,能起到很好的导航作用。 鉴于上述原因,于是乎,俺就决定为俺地“赤兔英语网”做一个网站地图。由于Google等搜索引擎所需的网站地图必须是XML文件,所以俺决定做网页形式和XML形式两种网站地图。我们的网站是用C#开发的,当然是使用C#语言来编写俺地网站地图了,赫赫。 首先,我们来看看,我们的网站地图该怎么生成,怎么展现。简单思考之后,我决定这样做。网站首页的菜单中添加“网站地图”选项,其链接着网页形式的网站地图,页面名字为sitemap.html;首页的底部也添加链接“网站地图”,其链接着XML格式的网站地图,页面名字为sitemap.xml。这两个页面生成程序在后台添加。设置一个按钮,管理员在一段时间内点击该按钮,直接生成这两个文件,放在网站的根目录下,供客户端随时调用。 下面,我们来看看生成网站地图的代码的具体实现。为了文章可读性,我们从顶向下来对code实现过程做以介绍。 一、网站地图的顶层设计 顶层的网站地图生成按钮的code为: protected void BtnGenerateSitemap_Click(object sender, EventArgs e) { createHtmlSitemap(); createXMLSitemap(); WebUtility.ResponseScript("网站地图生成完毕!",0); } 上面code一目了然,createHtmlSitemap()用来生成html网站地图,createXMLSitemap()用来生成XML网站地图。 二、Html网站地图的生成 我们先介绍Html网站地图的生成。createHtmlSitemap()的code如下: public void createHtmlSitemap() { FileInfo HtmlFile = null; StreamWriter WriteHtmlFile = null; string FilePath = Server.MapPath("sitemap.html");//获取html文件路径及名称 HtmlFile = new FileInfo(FilePath);//创建html文件 WriteHtmlFile = HtmlFile.CreateText(); WriteHtmlFile.WriteLine(" "); WriteHtmlFile.WriteLine(""); WriteHtmlFile.WriteLine(""); WriteHtmlFile.WriteLine(" "); WriteHtmlFile.WriteLine(""); WriteHtmlFile.WriteLine(" "); getHtmlSitemapData(WriteHtmlFile); WriteHtmlFile.WriteLine(" "); WriteHtmlFile.WriteLine(""); WriteHtmlFile.Close(); } 上述code创建了html文件sitemap.html,并使用对象StreamWriter书写了sitemap.html。函数getHtmlSitemapData(WriteHtmlFile)完成了sitemap.html正文部分的组织。 需要注意的是,如果网站地图中有中文,必须将charset设置为UTF-8。否则中文不能正常显示。 public void getHtmlSitemapData(StreamWriter writerFile) { string classTableName = "ArticleClass"; string articleItemTableName = "ArticleItem"; string connectionString = ConfigurationManager.AppSettings["SQLConnString"].ToString(); SqlConnection conn = new SqlConnection(connectionString); if (conn.State == ConnectionState.Closed) { conn.Open(); } //查询大类信息 SqlDataAdapter classDataAdpt = new SqlDataAdapter("SELECT Id, Classname FROM " + classTableName, connectionString); DataSet classDataSet = new DataSet(); classDataAdpt.Fill(classDataSet, classTableName); writerFile.WriteLine(""); //按照大类信息来查取各个大类下的文章信息 for (int i = 0; i < classDataSet.Tables[0].Rows.Count; i++) { string tempsql = "SELECT Id, ArticleTitle, Parentid FROM " + articleItemTableName + " where Parentid = " + classDataSet.Tables[0].Rows[i][0].ToString(); SqlCommand cmd = new SqlCommand(tempsql, conn); if (conn.State == ConnectionState.Closed) { conn.Open(); } SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (rdr.HasRows) { int classId = 0; int rowNum = 0;//记录处理了篇文章信息 int memberInLine = 5;//每行显示多少篇文章的链接信息 while (rdr.Read()) { //处理大类信息,大类也需要以超链接的方式写入html文件 if (classId != int.Parse(rdr[2].ToString())) { rowNum = 0; classId = int.Parse(rdr[2].ToString()); writerFile.WriteLine(""); writerFile.WriteLine(""); writerFile.WriteLine(""); } //处理文章信息 rowNum++; if (1 == (rowNum % memberInLine))//a new line { writerFile.WriteLine(""); } writerFile.WriteLine(""); if (0 == (rowNum % memberInLine))//a new line { writerFile.WriteLine(""); } } } rdr.Close(); } writerFile.WriteLine(" "); writerFile.WriteLine("" + classDataSet.Tables[0].Rows[i][1].ToString() + ""); writerFile.WriteLine(" "); writerFile.WriteLine("" + rdr[1].ToString() + ""); writerFile.WriteLine(" "); } 三、XML网站地图的生成 XML网站地图的生成与Html不同点在于,Google等搜索引擎对这种网站地图的格式有严格的要求,必须遵守,否则不会被他们承认。具体xml文件格式可参考http://www.chituwang.com/Article/WZJS/detail.aspx?articleid=18092 createXMLSitemap()函数的实现如下: public void createXMLSitemap() { FileInfo XMLFile = null; StreamWriter WriteXMLFile = null; string FilePath = Server.MapPath("sitemap.xml"); XMLFile = new FileInfo(FilePath); WriteXMLFile = XMLFile.CreateText(); //下面两句话必须写,而且不能做任何修改 WriteXMLFile.WriteLine(""); WriteXMLFile.WriteLine(""); getXMLSitemapData(WriteXMLFile); WriteXMLFile.WriteLine("");//别忘了这句话 WriteXMLFile.Close(); } createXMLSitemap()的实现如下: public void getXMLSitemapData(StreamWriter writerFile) { string classTableName = "ArticleClass"; string articleItemTableName = "ArticleItem"; string connectionString = ConfigurationManager.AppSettings["SQLConnString"].ToString(); SqlConnection conn = new SqlConnection(connectionString); if (conn.State == ConnectionState.Closed) { conn.Open(); } //查询大类信息 SqlDataAdapter classDataAdpt = new SqlDataAdapter("SELECT Id, Classname FROM " + classTableName, connectionString); DataSet classDataSet = new DataSet(); classDataAdpt.Fill(classDataSet, classTableName); for (int i = 0; i < classDataSet.Tables[0].Rows.Count; i++) { string tempsql = "SELECT Id, ArticleTitle, Parentid FROM " + articleItemTableName + " where Parentid = " + classDataSet.Tables[0].Rows[i][0].ToString(); SqlCommand cmd = new SqlCommand(tempsql, conn); if (conn.State == ConnectionState.Closed) { conn.Open(); } SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (rdr.HasRows) { int subClassId = 0; while (rdr.Read()) { //处理大类信息, if (subClassId != int.Parse(rdr[0].ToString())) { subClassId = int.Parse(rdr[0].ToString()); writerFile.WriteLine(""); writerFile.WriteLine("" + "http://www.chituwang.com/Article/index.aspx?parentid=" + rdr[2].ToString() + ""); writerFile.WriteLine("" + DateTime.Now.ToShortDateString() + ""); writerFile.WriteLine("daily"); writerFile.WriteLine("0.5"); writerFile.WriteLine(""); } //处理文章信息 writerFile.WriteLine(""); writerFile.WriteLine("" + "http://www.chituwang.com/Article/index.aspx?articleid=" + rdr[0].ToString() + ""); writerFile.WriteLine("" + DateTime.Now.ToShortDateString() + ""); writerFile.WriteLine("monthly"); writerFile.WriteLine("0.4"); writerFile.WriteLine(""); } } rdr.Close(); } } 通过上面两个小节的介绍,网页和XML两种形式的网站地图就生成了。 四、网站地图的提交 向Google提交网站地图: https://www.google.com/webmasters/tools/login?hl=zh_CN 1、进入这个网址,用你的Google帐户登录,然后添加你的网址; 2、接下来按照Google的要求验证你网站,你可以选择html文件验证。 3、这时候,按照Google的要求,制作一个Google要求的文件名的html文件 4、用FTP讲这个html文件和你的xml格式的网站地图文件一起传到你网站的根目录 5、确认验证,回到控制台,添加你的地图文件。很快,Google就会根据网站地图文件来更新你的网站 向yahoo提交网站地图: 英文yahoo提交网址: http://search.yahoo.com/info/submit.html 首先用FTP讲你的网站地图传到网站的根目录。打开网址后,选择Submit Your Site for Free: 用yahoo帐户登录,然后输入你的网站地图的URL就可以了。 中文Yahoo的提交网址: http://sitemap.cn.yahoo.com/mysites 这个操作和Google的差不多,登录、验证网站、提交网址地图URL。 向MSN提交网站地图Sitemap: 用URL直接提交:http://api.moreover.com/ping?u=http://your.domainname/sitemap.xml 这是向MSN直接提交网站地图的后门URL 向ASK提交网站地图Sitemap: 直接提交。http://submissions.ask.com/ping?sitemap=http://your.domainname/sitemap.xml 向网店联盟提交地址:http://www.dianmeng.com/ 向百度Baidu提交网站地图Sitemap: 没办法,现在百度不支持Sitemap。但可通过http://www.baidu.com/search/url_submit.html来提交你的网址。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐