很多个人站长会使用工具来生成自己网站的站点地图,这样做的缺点在于网站的 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. LeetCode "Binary Tree Level Order Traversal II" using DFS

    BFS solution is intuitive - here I will show a DFS based solution: /** * Definition for a binary tre ...

  2. SVD分解的理解[转载]

    http://www.bfcat.com/index.php/2012/03/svd-tutorial/ SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很 ...

  3. 关于oracle修复控制文件与数据文件不一致的问题----

    本小菜鸟周末鼓捣数据库关于rman恢复与备份方面的实验,结果不知道哪根筋搭错了,手一哆嗦,做了不知道什么操作,就出现了数据库打不开的严重状态,只能开启到mount状态,但是切换到open状态时就会报错 ...

  4. MapReduce Shuffle原理 与 Spark Shuffle原理

    MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapReduce中的Shuffle更像是洗牌的逆过程,把一 ...

  5. MapReduce排序输出

    hadoop的map是具有输出自动排序功能的~继续学习~ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.c ...

  6. Discuz 模板目录

    -------------------------------------------------------------------------------------------------- t ...

  7. CRM 日期类型的一些处理JS

    //当前日期 var now = new Date(); //换算为毫秒数 var now_ms = Date.UTC( now.getFullYear(), now.getMonth(),now.g ...

  8. 将插入的新行放入dataGridView的第一行

    将插入的新行放入dataGridView的第一行 习惯这样用的: dataGridView1.Rows.Add(dataRow);改成:dataGridView1.Rows.Insert(0,data ...

  9. poj 2513 Colored Sticks trie树+欧拉图+并查集

    点击打开链接 Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27955   Accepted ...

  10. [DFNews] What's coming in EnCase 7.08?

    论版本变化速度,AD绝对首屈一指,从FTK 4到现在的FTK 5也不过两年多时间,EnCase近期(初步预计8月初)将推出V7的新版本7.08,下面是一些新功能: Evidence Processor ...