很多个人站长会使用工具来生成自己网站的站点地图,这样做的缺点在于网站的 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 一下各搜索引擎,方法如下:

//google
System.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(); //ask
System.Net.WebRequest reqAsk = System.Net.WebRequest
.Create("http://submissions.ask.com/ping?sitemap=" +
HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));
reqAsk.GetResponse(); //yahoo
System.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(); //bing
System.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 创建网站地图的更多相关文章

  1. SharePoint 创建网站地图树视图及格式枚举截图

    SharePoint 创建网站地图树视图及格式枚举截图         SharePoint首页隐藏掉左側导航以后,假设要以树视图呈现站点地图也非常easy.         仅仅须要复制v4.mas ...

  2. 用ASP.NET创建网站

    ASP.NET提供三种框架来创建web应用:WebForms,ASP.NET MVC和ASP.NET WebPages.这三种框架都是稳定成熟的,你可以用任何一种方式开发一个很棒的web应用.不管你选 ...

  3. django网站地图sitemap

    网站地图是根据网站的结构.框架.内容,生成的导航网页,是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指 ...

  4. 第六章:Django 综合篇 - 7:网站地图sitemap

    网站地图是根据网站的结构.框架.内容,生成的导航网页,是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指 ...

  5. 创建Google网站地图Sitemap.xml

    Sitemap.xml是google搞出来的,也就是网站地图,不过这个网站地图是用xml写的,而且要按google的标准来写,并且要将写出来的这个文件sitemap.xml上传到自己的服务器空间中去. ...

  6. 在Windows Azure上创建ASP.NET MVC网站

    本篇体验在Windows Azure上创建ASP.NET MVC网站. →登录到Windows Azure管理门户 →点击左下方的"新建" →点击"自定义创建" ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

    显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据   目录 ASP.N ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

    上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...

随机推荐

  1. 解决TalbleView头部或底部子控件不显示问题

    在自定义cell头部控件UITableViewHeaderFooterView(和自定义cell的方法几乎一样)时,出现了头部控件子控件不显示的问题. 注意和自定义cell的区别. .h文件 #imp ...

  2. yii2 使用composer安装

    composer global require "fxp/composer-asset-plugin:~1.0.0" composer create-project --prefe ...

  3. bzoj2515 Room

    Description Input Output 折半搜索,用散列表记录从原点出发,用了S(状压表示)这几种边(令|S|*2-1<=n),到达(x,y)的最大面积. #include<cs ...

  4. python学习-day18、文件处理、

    4.文件操作 武sir:http://www.cnblogs.com/wupeiqi/articles/4943406.html 林海峰:http://www.cnblogs.com/linhaife ...

  5. linux下生成rsa密钥的方法

    首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才 ...

  6. API接口验证

    一.前言 权限验证在开发中是经常遇到的,通常也是封装好的模块,如果我们是使用者,通常指需要一个标记特性或者配置一下就可以完成,但实际里面还是有许多东西值得我们去探究.有时候我们也会用一些开源的权限验证 ...

  7. JVM参数(三)打印所有XX参数及值

    本篇文章基于Java 6(update 21oder 21之后)版本, HotSpot JVM 提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值. -XX:+PrintFlag ...

  8. KVO/KVC 实现机理分析

    来源:http://blog.csdn.net/dqjyong/article/details/7672865 Objective-C里面的Key-Value Observing (KVO)机制,非常 ...

  9. DevExpress ChartControl大数据加载时有哪些性能优化方法

    DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...

  10. Runloop基础知识

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...