当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET做SEO:制作架构清晰和更新及时的网站地图

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

ASP.NET做SEO:制作架构清晰和更新及时的网站地图


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-17   浏览: 304 ::
收藏到网摘: n/a

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

这里我们首先要明白一个基本的原理,搜索引擎的爬行方式。整个互联网就像一张纵横交错的“网”:网的各个节点就是各个网页,而各个网页之间通过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,
}

作者:自由飞 原文链接