分享
 
 
 

ASP.NET的SEO Linq to XML---网站地图和RSS Feed

王朝学院·作者佚名  2010-03-05
窄屏简体版  字體: |||超大  

网站地图的作用是让搜索引擎尽快的,更多的收录网站的各个网页。

这里我们首先要明白一个基本的原理,搜索引擎的爬行方式。整个互联网就像一张纵横交错的“网”:网的各个节点就是各个网页,而各个网页之间通过url相互连接。蜘蛛可以从一个网页出发,通过该网页上的url,爬到另一个网页;再通过另一个网页上的url,再爬到更多的网页……,以此类推。但如果是一个新发布的网站,可能就没有其他url指向它,那么它就永远不会被“爬到”(收录)。为了解决这个问题,新站可以自己主动向搜索引擎提交url,申请蜘蛛前来抓取(Google申请网址:),但申请时一般只会提交一个主页的url。

为了让所有的url(尤其是动态生成的)都能被蜘蛛快捷便利的检索到,我们就需要提供一个全面完整、架构清晰和更新及时的网站地图。

和处理重复内容的robots.txt文件,我们通过.ashx文件来生成一个基于sitemaps.org的xml格式的网站地图。网站地图生成之后,我们就可以向Google等搜索引擎提交。大量的文章证实,提交网站地图将极大的提高网站的收录速度和深度。其他几乎所有的SEO方法,都有可能效果难以证实、失效甚至带来副作用,但提交网站地图除外!

Linq to XML为我们带来了近乎完美的操作体验。

<%@ WebHandler Language="C#" Class="website" %>

using System;

using System.Web;

using System.Xml;

using System.Xml.Linq;

using System.Linq;

public class website : IHttpHandler {

public void ProcessRequest (HttpContext context) {

context.Response.ContentType = "text/xml";

//文件的声明信息,第第三个参数standalone的值yes 表示这个 XML 文档是自包含的(self-contained)而不依赖于外部所定义的一个 DTD.

XDeclaration declaration = new XDeclaration("1.0", "UTF-8", "yes");

context.Response.Write(declaration);

//XML文件的命名空间

XNamespace ns = "http://www.google.com/schemas/sitemap/0.84";

XElement siteMap = new XElement(ns + "urlset");

string fixedUrl = "http://www.freeflying.com/article";

string wholeUrl = string.Empty;

//循环取出数据,转换成XML节点

foreach (var item in Articles.GetArticles())

{

XElement url = new XElement("url");

wholeUrl = string.Format("{0}?id={1}&catelog={2}",fixedUrl,item.ID,item.Catelog);

XElement loc = new XElement("loc", wholeUrl);

XElement lastmod = new XElement("lastmod", item.LastMod.AddDays(-23).ToShortDateString());

XElement changefreq = new XElement("changefreq", item.Frequency);

XElement priority = new XElement("priority", item.Weight);

url.Add(loc, lastmod, changefreq, priority);

siteMap.Add(url);

}

//最后输出整个xml文件

context.Response.Write(siteMap);

}

public bool IsReusable {

get {

return false;

}

}

}

同样还将使用到xml技术的还有RSS

<%@ WebHandler Language="C#" Class="rss" %>

using System;

using System.Web;

using System.Xml;

using System.Xml.Linq;

public class rss : IHttpHandler {

public void ProcessRequest (HttpContext context) {

context.Response.ContentType = "text/xml";

context.Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");

XElement rssFeed = new XElement("rss", new XAttribute("version","2.0"));

string fixedUrl = "http://www.freeflying.com/article";

string wholeUrl = string.Empty;

XElement channel = new XElement("channel",

new XElement("title", "freeflying"),

new XElement("link", fixedUrl),

new XElement("description","the website for dream flying freely"),

new XElement("pubDate",DateTime.Now.ToString())

);

foreach (var article in Articles.GetArticles())

{

XElement item = new XElement("item");

XElement title = new XElement("title", article.Title);

wholeUrl = string.Format("{0}?id={1}&catelog={2}", fixedUrl, article.ID, article.Catelog);

XElement link = new XElement("link", wholeUrl);

XElement description = new XElement("description", article.Description);

XElement pubDate = new XElement("pubDate", article.LastMod.ToString());

item.Add(title,link,description,pubDate);

channel.Add(item);

}

rssFeed.Add(channel);

context.Response.Write(rssFeed);

}

public bool IsReusable {

get {

return false;

}

}

}

模拟数据

using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Web.UI.MobileControls;

using System.Collections.Generic;

/// <summary>

/// Summary description for Articles

/// </summary>

public class Articles

{

public Articles()

{

//

// TODO: Add constructor logic here

//

}

public static List<Article> GetArticles()

{

return new List<Article>(){

new Article(234, "blog", DateTime.Now.AddDays(-23), Freq.none, 0.8, "asp.net seo", "articles about SEO in asp.net"),

new Article(267, "blog", DateTime.Now.AddDays(-245), Freq.daily, 0.6, "ado.net pro","about the dataset usage"),

new Article(653, "news", DateTime.Now.AddDays(-45), Freq.daily, 1,"CLR via C#","notebook about this book")

};

}

}

public class Article

{

public int ID;

public string Catelog;

public DateTime LastMod;

public double Weight;

public Freq Frequency;

public string Title;

public string Description;

public Article(int id, string catelog, DateTime lastMod, Freq frequency, double weight, string title, string description)

{

ID = id;

Catelog = catelog;

LastMod = lastMod;

Weight = weight;

Frequency = frequency;

Title = title;

Description = description;

}

}

public enum Freq

{

none = 1,

daily = 2,

weekly = 3,

}

作者:自由飞 原文链接

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有