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 一下各搜索引擎,方法如下:
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 创建网站地图的更多相关文章
- SharePoint 创建网站地图树视图及格式枚举截图
SharePoint 创建网站地图树视图及格式枚举截图 SharePoint首页隐藏掉左側导航以后,假设要以树视图呈现站点地图也非常easy. 仅仅须要复制v4.mas ...
- 用ASP.NET创建网站
ASP.NET提供三种框架来创建web应用:WebForms,ASP.NET MVC和ASP.NET WebPages.这三种框架都是稳定成熟的,你可以用任何一种方式开发一个很棒的web应用.不管你选 ...
- django网站地图sitemap
网站地图是根据网站的结构.框架.内容,生成的导航网页,是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指 ...
- 第六章:Django 综合篇 - 7:网站地图sitemap
网站地图是根据网站的结构.框架.内容,生成的导航网页,是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指 ...
- 创建Google网站地图Sitemap.xml
Sitemap.xml是google搞出来的,也就是网站地图,不过这个网站地图是用xml写的,而且要按google的标准来写,并且要将写出来的这个文件sitemap.xml上传到自己的服务器空间中去. ...
- 在Windows Azure上创建ASP.NET MVC网站
本篇体验在Windows Azure上创建ASP.NET MVC网站. →登录到Windows Azure管理门户 →点击左下方的"新建" →点击"自定义创建" ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构
咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据 目录 ASP.N ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...
随机推荐
- dubbo 转
http://blog.csdn.net/zhiguozhu/article/details/50517513 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式 ...
- python(24)urlencode和urldecode
当url地址含有中文,或者参数有中文的时候,这个算是很难正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至‘/’做一下编码转换. 一.urlencode ur ...
- spring Transaction Propagation 事务传播
spring Transaction中有一个很重要的属性:Propagation.主要用来配置当前需要执行的方法,与当前是否有transaction之间的关系. 我晓得有点儿抽象,这也是为什么我想要写 ...
- Spark往Elasticsearch读写数据
def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setAppName("DecisionTre ...
- 用于所有Windows驱动程序开发者的概念
用户模式和内核模式 虚拟地址空间 设备节点和设备堆栈 I/O 请求数据包 驱动程序堆栈 微型驱动程序和驱动程序对 Windows 驱动程序工具包中的头文件 为不同版本的 Windows 编写驱动程序
- Aspose.Cells 设置背景颜色
很多小伙伴设置背景颜色都不起作用,特别提醒需要加入下面一行: style.Pattern = BackgroundType.Solid; Aspose.Cells.Style style = null ...
- [CF #290-C] Fox And Names (拓扑排序)
题目链接:http://codeforces.com/contest/510/problem/C 题目大意:构造一个字母表,使得按照你的字母表能够满足输入的是按照字典序排下来. 递归建图:竖着切下来, ...
- 12. Binary Tree Postorder Traversal && Binary Tree Preorder Traversal
详见:剑指 Offer 题目汇总索引:第6题 Binary Tree Postorder Traversal Given a binary tree, return the po ...
- 修复山寨版的J-Link
Fixed J-Link 1. Erase (1) Power On (2) Jump "ERASE"(JP3) (3) Wait for 5s (4) Break ...
- Thinkphp源码分析系列(二)–引导类
在上一章我们说到,ThinkPHP.php在设置完框架所需要的变量和调教好环境后,在最后调用了 Think\Think::start(); 即Think命名空间中的Think类的静态方法start ...