网站SEO过程中发现URL重写实现伪静态原来并不难

网站要做SEO,地球人都知道,根据网站访问统计的结果,很大一部分来自百度搜索,少部分来自谷歌。

SEO一个很重要的方面就是进行路径的重写,也就是URL重写,实现伪静态,以前没做过,觉得可能会比较复杂,动手试了试,原来很好弄。

总的来说分三步,第一步:在web.config添加配置,第二步:写一个URL重写类,继承IhttpHandler接口,第三步:IIS配置

第一步:web.config添加配置

说动手就动手,打开VS2008,新建一个网站URLRewrite,打开web.config文件,在里面添加配置信息,如图所示位置

在图中所示的httpHandlers节点处添加子节点既可以,Verb表示请求类型,比如GET,POST等,path表示路径,type也就是哪个类来具体处理这个请求。* 表示通配符。下面举例说明

1.比如重写到某个目录

<add verb="*" path="test/*" type="CustomHttpHandler"/>表示对test目录下的所有文件进行URL重定向,CustomHttpHandler文件是我们自定义的一个重写类。

这个目录可以存在,可以不存在,两者有区别:存在的话CSS,JS,图片,文件路径可以用相对路径,基本不要动原来的,不存在的话,CSS,JS等就要采用绝对路径了。

2.比如重写成某类文件,这个后缀名常用的都是可以定义的。
<add verb="*" path="product/*.htm" type="CustomHttpHandler"/>表示打开链接中product目录下含有html文件都要进行URL重定向,如果你定义的后缀名在IIS扩展中没有,需要另外在IIS中添加扩展对应关系。

比如重写之前的地址可能是product/Default.aspx?id=2  那么重写之后变成product/2.htm

第二步:添加重写类CustomHttpHandler.cs

CustomHttpHandler.cs文件继承IhttpHandler接口,接口包含IsReusable属性和ProcessRequest方法,

ProcessRequest:用来处理http请求。
IsReusable:表示是否可以重用处理多个同类型的http请求。

下面进行重写,直接上代码,针对上面的两个示例写的

public class CustomHttpHandler : IHttpHandler
{
public CustomHttpHandler()
{
//
//TODO: 在此处添加构造函数逻辑
//
}

// 是否可以重用
public bool IsReusable
{
get
{
return true;
}
}


// 处理Http请求类
public void ProcessRequest(System.Web.HttpContext context)
{
// 获取当前链接地址
string url = context.Request.Url.PathAndQuery.ToString();
string realUrl = string.Empty;

// 这里用泛型来实现
Dictionary<string, string> urlDic = new Dictionary<string, string>();
urlDic.Add("/test", "/news/Default.aspx"); // 虚目录例子
urlDic.Add("product/(\\w+).htm", "product/Default.aspx?id=$1"); // 伪静态例子

// 循环判断
foreach(var item in urlDic)
{
// 匹配
if (Regex.IsMatch(url, item.Key, RegexOptions.IgnoreCase))
{
// 替换
realUrl = Regex.Replace(url, item.Key, item.Value, RegexOptions.IgnoreCase);
}
}
if (realUrl != "")
{
// 直接执行真实URL
context.Server.Execute(realUrl);
}
else
{
context.Response.Write("重写异常");
}
context.Response.End();
}
}

这个类运用的最多的是正则表达式,匹配和替换,正则表达式学个1-2个小时,基本上简单的都会用的。有一个注意的地方,要替换的地方加()即可,这个我也搞了蛮久的,一直替换不了。

到这里为止,在VS2008基本上可以运行测试了,在default.aspx文件里有例子。

第三步:IIS配置

发布部署到IIS以后,如果不修改IIS,打开链接会报找不到文件的404错误,

以IIS5.1为例,因为我用的是XP系统,找到【主目录】选项卡,点击配置,弹出应用程序配置窗口,如图所示

添加一个和.aspx一模一样的扩展,只是后缀名为htm,另外有个注意点:

检查文件是否存在的勾√必须去掉。

到此位置,重写介绍结束,这是第一次上完整源码DEMO,谢谢各位支持。

DEMO地址:http://files.cnblogs.com/netsql/URLRewrite.rar

posted @ 2011-12-26 21:29 NetSQL 阅读(227) 评论(2) 编辑 收藏