[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
首先我要说明:Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于给用户导航,而这里说的Sitemap是用来给搜索引擎爬虫指路。
还是直接来看看官方解释吧:
什么是Sitemap?
Sitemap 可方便管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitepmap 形式,就是 XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
网络抓取工具通常会通过网站内部和其他网站上的链接查找网页。Sitemap 会提供此数据以便允许支持 Sitemap 的抓取工具抓取 Sitemap 提供的所有网址,并了解使用相关元数据的网址。使用 Sitemap 协议并不能保证网页会包含在搜索引擎中,但可向网络抓取工具提供一些提示以便它们更有效地抓取网站。
Sitemap 0.90 是依据创意公用授权-相同方式共享 (Attribution-ShareAlike Creative Commons License) 的条款提供的,并被广泛采用,受 Google、Yahoo! 和 Microsoft 在内的众多厂商的支持。
引自Sitemaps.org:http://www.sitemaps.org/zh_CN/
综上所述,提供Sitemap是辅助搜索引擎爬虫收录网站的一种手段,没有Sitemap你的网站一样会被收录,而有了Sitemap则会被收录的更全面、准确。
它除了提供网址外,最重要的就是提供了页面的更新时间戳,以及网站侧重点和更新回访频率建议,使得搜索引擎能更精确地把握你的网站。
如何实现自动生成Sitemap?
现成的生成器已有不少:
http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators
http://www.google.com/support/webmasters/bin/answer.py?answer=34634
不过在Asp.Net中,没有官方的生成工具,搜索“Asp.Net Sitemap”找到的也都是大把的Asp.Net内置的Sitemap功能介绍网页。
故此,我希望自己来实现一个Asp.Net的Sitemap生成工具。并且我希望这个工具是可以和Asp.Net同步交互进行数据更新的,以保障数据的时效性;而其他大多数生成器都像是一个私人爬虫,你需要手动放出它来爬遍你的网站,以生成整站的Sitemap,我不喜欢这样。
XmlSitemap
这就是我实现的Sitemap生成工具,简单讲一下实现方式:
- 通过数据库存储站点、页面集合、页面数据:
- 在Asp.Net网站中,增删改数据时,调用站点地图公开的方法更新数据库数据。
- 通过Ashx输出XML格式的Sitemap供搜索引擎爬虫读取。
在文章末尾处我将共享此项目的下载链接,接下来将讲一下此项目的使用方法。
如何部署?
我将提供以下文件用于在现有Asp.Net网站中部署此功能:
首先要引用XmlSitemap.dll。
然后通过“添加现有项”将XMLSiteMap.ashx.cs及XMLSiteMap.ashx添加到项目中。
再通过“添加现有项”将SiteMap.mdf添加到项目的App_Data目录中。
在Web.Config中指定SiteMap.mdf的数据库连接字串:
<connectionStrings>
<add name="MySitemapDataConnstr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\SkyD\Documents\Visual Studio 2008\Projects\实验室\WebApplication10\WebApplication10\App_Data\SiteMap.mdf';Integrated Security=True;User Instance=True"/>
</connectionStrings>
在项目中新增一个Global.asax文件(如果之前没创建此文件的话),在其Application_Start中进行初始化:
其中蓝色高亮部分是上文中在Web.Config中指定的SiteMap.mdf的数据库连接字串;
黄色高亮部分是你的网站名称,在每次提交数据时都将用到此字符串;
绿色高亮部分是你的这个站点的网址,每次新增的网址数据都必须位于此网址域名下。
如何使用?
我们将通过一个按钮来模拟添加数据的操作:
protected void Button1_Click(object sender, EventArgs e)
{
var id=Guid.NewGuid();
站点地图.添加页面("MySite", id, Path.Combine("http://www.MySite.com/", "Page.aspx?ID=" + id), 0.5, 更新频率.每天);
}
注意:这里仅仅是用来测试,所以临时生成了一个Guid传入站点地图,而在实际使用时,应当以你的原数据条目的Guid传入,因为你在之后很可能还会对其进行更新、删除操作,如果同时要反映到站点地图中的话,你就必须还以它的Guid作为标识,才能找到它。
当你频繁点击这个按钮后,站点地图中就会新增了多条数据,你可以通过访问XmlSiteMap.ashx?Site=MySite查看当前的页面集合列表:
其中的Url地址是页面集合的网址,由于页面数据量没有达到页面集合所容纳的上限,所以目前就只有一个页面集合。
访问页面集合的网址:
这里就是每个页面的详细地址及相关信息列表。
除了添加数据之外,还有更新、删除等方法,由于都是中文写的代码,易于理解,就不在此一一演示了:
资源下载
部署文件:http://www.uushare.com/user/icesee/file/1893271
示例网站项目源代码:http://www.uushare.com/user/icesee/file/1893269
XmlSitemap源代码:http://www.uushare.com/user/icesee/file/1893270
本文的XPS版本:http://www.uushare.com/user/icesee/file/1895946
[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap相关推荐
- 企业网站自动生成系统的设计和实现
技术:Java.JSP等 摘要: 随着Internet技术的发展,人们的日常生活已经离不开网络.未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化.网络化.电子化.虚拟化.Intern ...
- 帝国cmssitemap.php,帝国CMS如何自动生成sitemap.xml网站地图
帝国CMS如何自动生成sitemap.xml网站地图? 步骤:登录网站的后台http://你的域名/e/admin/ 进入后台栏目 =>增加自定义页面 =>选择直接页面,页面名称为:网站 ...
- .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)
.net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services.AddM ...
- 自动生成sitemap地图PHP代码
自动生成sitemap地图php代码,无需调用数据库,适用于百度站长提交,需要php的环境,本代码是通过php运行的. 代码如下: <?php $dom = new DOMDocument(&q ...
- 帝国cms自动生成sitemap地图
帝国cms自动生成sitemap地图的方法, 新建自定义页面,复制以下代码,注意把www.tyyjyzs.com改成自己的网址,提交生成,刷新所以自定义页面即可 <?='<?xml ver ...
- php scandir sftp,CentOS 下使用SFTP实现网站自动生成FTP账号,实现Chroot功能
背景 手上有一个这样的系统:后台可以直接新建项目(网站),只需输入项目名称.访问域名(二级)以及其他一些额外信息,就可自动生成一个模板网站.大致原理是:提交这些信息的时候,后台会给项目新建一个目录,并 ...
- SEO优化之根据网址自动生成sitemap.xml文件
背景: 公司要做一个电商的网站,而该项目是由J2EE架构完成,项目经理说要让Java代码自助每天生成电子商务网站的Sitemap文件,然后开始上网各种查资料!!!然而,终于碰上了本人有生以来第一个在网 ...
- mediawiki自动生成sitemap
Mediawiki 1.17.0提供了generateSitemap.php生成sitemap文件,可不必再使用扩展. 每次调用generateSitemap.php,生成全部sitemap.一般是通 ...
- sitemap php 生成,php自动生成sitemap
网站的sitemap是爬虫抓取的主要地方,提交了sitemap的url,爬虫会优先抓取. 所以我们平时要有定期更新sitemap的习惯,生成sitemap的方法有很多,第三方工具抓取生成,自己生成.这 ...
最新文章
- 急需降低系统复杂性,我们从 Kafka 迁移到了 Pulsar
- long转string类型_从php内核角度分析php弱类型
- 微信开发 提示 Redirect_uri参数错误解决方法
- 吴恩达机器学习笔记:(六)Octave使用
- mapreduce编程规范_大数据之MapReduce详解
- 怎么在linux指定目录下查找文件夹下,Linux下如何使用find命令指定目录查找文件...
- 通过零拷贝实现高效的数据传输(操作系统)
- IOS基础之计算器的编写
- Java中Integer与String类型互转
- mysql数据库咋还原_mysql数据库备份和还原
- 1.零基础Java基础教程9天入门
- mysql auto_inc_MySQL innodb_autoinc_lock_mode 详解
- J2ME-CLDC/MIDP资源
- OpenCV-Python教程(8、Canny边缘检测)
- 2021考研王道计算机408
- 自媒体入门如何制作出优质视频,有这5款软件就够了
- 史海峰:我的架构师修炼之道
- 怎样在微信上发淘宝商品链接?
- mysql 临时表联表查询_一、MySQL中使用从表A中取出数据来更新表B的内容例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin。SQL语言中不...
- win10 安装mysql5.7 超详细(亲测成功)