技术开发 频道

详解ASP.NET的SEO:如何排除重复内容

  【IT168 技术文档】不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为“重复内容”,如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高。所以我们应尽量避免各种重复内容。

  第一篇:详解ASP.NET的SEO:RewritePath()方法
  第二篇:详解ASP.NET的SEO:服务器控件背后故事

  动态网站的重复内容常常是由URL参数引起的,而URL重写会恶化这一现象(比较耐人寻味哟,呵呵)。因为如果使用的是原始的URL参数的话,搜索引擎可能会进行适当的判断,而得知重复内容是由URL参数引起的,自动的进行相应的处理;而URL重写会掩盖URL参数,反而使得搜索引擎无法识别URL参数。比如:

  原始的URL:

  http://www.freeflying.com/articles.aspx?id=231&catelog=blog
  http://www.freeflying.com/articles.aspx?id=231&catelog=news

  经过URL重写过后的URL:

  http://www.freeflying.com/blog/231.html
  http://www.freeflying.com/news/231.html

  这些URL所指向的页面内容其实是一样的,都是id=231的那篇文章,但这篇文章被blog和news两个栏目所引用,出于各种原因的考虑,我们最终的URL还是如上所示。

  处理的办法有两种,一种是利用机器人(robot)协议“排除”其中一个,另一种是通过301将其中一个URL永久重定向另一个URL。

  今天我们先讲robot协议。简单的讲,robot指的就是搜索引擎,针对Google,我们又将其称之为“蜘蛛(spider)”。蜘蛛是很有礼貌的,在抓取你的网页内容的之前,会首先征求你的意见。而你和robot之前就基于robot协议进行沟通。具体到实现,有两种方式:

  1. 将一个的robots.txt文本添加到网站根目录下,如:

  #static content, forbid all the pages under the "Admin" folder

  User
-agent: *

  Disallow:
/Admin

  #行表示注释;

  User-agent指搜索引擎,*表示针对所有搜索引擎,也可以指定具体的搜索引擎,如User-agent: googlebot;

  Disallow指定不允许访问的目录或页面,注意:1. 此文本是大小写敏感的;2.必须以“\”开头,表示网站根目录;

  和本系列的宗旨一样,我们着重谈ASP.NET技术。所以更多的robots.txt文本的注意事项,请查看http://www.googlechinawebmaster.com/2008/03/robotstxt.html

  但我们怎么动态的生成这个文件呢(这种需求其实蛮多的)?可能我们马上想到的就是I/O操作,在根目录下写一个txt文件……,但其实还可以有一种方法:使用一般处理程序(.ashx文件),代码如下:

  using System;

  
using System.Web;

  
public class Handler : IHttpHandler {

  
public void ProcessRequest (HttpContext context) {

  HttpResponse response
= context.Response;

  response.Clear();

  
//response.ContentType = "text/plain"; 如果要用IE6查看页面的话,不能这一条声明,原因不详

  
//下面这两句在实际使用中应该数据库等动态生成

  response.Write(
"User-agent: * \n");

  response.Write(
"Disallow: /news/231.html \n");

  
//引用一个静态的robots文件内容,里面存储不会改变的屏蔽内容

  response.WriteFile(
"~/static-robots.txt");

  response.Flush();

  }

  
public bool IsReusable {

  
get {

  
return false;

  }

  }

  }
0
相关文章