首页 > 代码库 > ASP.NET 创建网站地图
ASP.NET 创建网站地图
很多个人站长会使用工具来生成自己网站的站点地图,这样做的缺点在于网站的 sitemap 不能及时的得到更新。当我们发表了一篇新文章时,应该对网站的地图进行更新,并通知搜索引擎网站地图已经发生了改变!
首先,让我们看看在 ASP.NET 中怎样生成网站地图。第一步,我们完成创建节点的方法,如下:
/// <summary>/// 创建节点/// </summary>/// <param name="strUrl">链接地址</param>/// <param name="dLastMod">最后修改时间</param>/// <param name="strChangeFreq">更新频率</param>/// <returns>返回节点</returns>private static XmlNode CreateNode(string strUrl, DateTime dLastMod, string strChangeFreq){ XmlNode xNodeUrl = xd.CreateElement("url"); XmlNode nodeLoc = xd.CreateElement("loc"); nodeLoc.InnerText = strUrl; xNodeUrl.AppendChild(nodeLoc); XmlNode nodeLastMod = xd.CreateElement("lastmod"); nodeLastMod.InnerText = dLastMod.ToString("yyyy-MM-ddThh:mm:ss+00:00"); xNodeUrl.AppendChild(nodeLastMod); XmlNode nodeChangeFreq = xd.CreateElement("changefreq"); nodeChangeFreq.InnerText = strChangeFreq; xNodeUrl.AppendChild(nodeChangeFreq); return xNodeUrl;}
接下来调用上边的方法,遍历网站文章,输出网站地图:
static XmlDocument xd = new XmlDocument();/// <summary>/// 输出 Sitemap/// </summary>/// <param name="article">List<Article></param>public static void WriteSitemap(List<Article> article){ string strFile = HttpRuntime.AppDomainAppPath + "xml/sitemap.xml"; XmlNode rootNode = xd.CreateElement("urlset"); XmlAttribute attrXmlNS = xd.CreateAttribute("xmlns"); attrXmlNS.InnerText = "http://www.sitemaps.org/schemas/sitemap/0.9"; rootNode.Attributes.Append(attrXmlNS); // 网站首页 rootNode.AppendChild(CreateNode("http://www.lidongkui.com/", DateTime.Now, "daily")); //创建各文章节点 <url></url> foreach (Article a in article) { rootNode.AppendChild(CreateNode("http://www.lidongkui.com/" + a.UrlName, a.AddTime, "monthly")); } xd.AppendChild(rootNode); xd.InsertBefore(xd.CreateXmlDeclaration("1.0", "UTF-8", null), rootNode); xd.Save(strFile);}
最后,只需要获取文章,调用方法输出网站地图:
XML.WriteSitemap(db.Articles .OrderByDescending(m => m.ID) .ToList() );
到这里就成功输出了网站地图,但是输出网站地图后搜索引擎并不能及时发现我们网站地图的改变,这时我们需要 ping 一下各搜索引擎,方法如下:
//googleSystem.Net.WebRequest reqGoogle = System.Net.WebRequest .Create("http://www.google.com/webmasters/tools/ping?sitemap=" + HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));reqGoogle.GetResponse();//askSystem.Net.WebRequest reqAsk = System.Net.WebRequest .Create("http://submissions.ask.com/ping?sitemap=" + HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));reqAsk.GetResponse();//yahooSystem.Net.WebRequest reqYahoo = System.Net.WebRequest .Create("http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=YahooDemo&url=" + HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));reqYahoo.GetResponse();//bingSystem.Net.WebRequest reqBing = System.Net.WebRequest .Create("http://www.bing.com/webmaster/ping.aspx?siteMap=" + HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));reqBing.GetResponse();
使用这些方法,当我们发表了一篇新文章后及时更新了我们的网站地图,同时告知搜索引擎我们的网站地图已经发生变化,这样更有利于 SEO。
转自:http://www.lidongkui.com/create-sitemap
ASP.NET 创建网站地图
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。