【转】G 优化(SEO)基于动态页面的静态页面实现

google优化(SEO)基于动态页面的静态页面实现
中国二手市场网站http://www.2shoushichang.com/ 小胖著 转贴标明出处

我们大家都知道,搜索引擎对于静态页面有异乎寻常的热爱,特别是google,更是如此;而我们通常所作的网站中,大部分都是动态的,一般通过参数的方式来进行动态页面的显示的,那么我们能不能通过一种简单的办法来达到生成静态网页的目的呢?特别是对于虚拟主机的用户,没有太多的空间,又不能对服务器配置进行更改,这个难度就比较大了.
下面,我已亲身经历,来详细描述一下实现的原理和具体做法:
我们已中国二手市场为例来说明.
中国二手市场http://www.2shoushichang.com/也是一个专著于二手信息的网站,从大的方面来说也算是分类信息网站,一开始也是采用动态网页的模式,通过参数的方式来实现二手信息的展示的.
比如,如果我们想查看电脑分类的所有信息,需要下面的连接http://www.2shoushichang.com/BigTypeList.aspx?id=100,如果想看更细的笔记本的分类需要打开下面的连接:http://www.2shoushichang.com/MidtypeList.aspx?id=100102,同样,如果想查看手机/mp3等的信息,需要在参数id后面跟上不同的类别id.我想,在分类信息里面,这种形式至少要占到95%以上,别的信息类网站,大部分也是采用的这种方式.
但是,对于spliter来说,他们不理解参数的意思,一般一个分类只采集一页或几页,很少能全部采集的(好像baidu比较喜欢采集).设想一下如果我们按照另外一种方式来处理,比如,对于电脑分类,第一页我们可以这种来设计:http://www.2shoushichang.com/bigtype/s-100-all-1.aspx能不能更好呢.我对于这个地址给大家详细解释一下:
其中,bigtype表示分类,表示要对信息类别中的大类进行处理,后面的s表示出售信息,100表示信息类别的id(这里表示电脑),all表示所有的区域,1表示第一页,这样,这一个地址就表示了http://www.2shoushichang.com/BigTypeList.aspx?id=100&page=1这样一个地址.
同样http://www.2shoushichang.com/Midtype/s-101100-qingdao-3.aspx表示的是查询青岛地区手机类别的第三页,它取代的地址是http://www.2shoushichang.com/MidtypeList.aspx?id=101100&city=青岛&type=s&Page=3
通过这种方式,我们就可以把所有查询都统一成固定地址的网页.
当然,对于显示信息的页,如http://www.2shoushichang.com/Product.aspx?id=10864,我们可以处理成这样http://www.2shoushichang.com/Product/10864.aspx这种方式.
这样,我们就可以把我们网站上几乎所有需要动态处理的地方,已静态网页的方式来实现了.

可能有人会说,这也太麻烦了,我需要建立多少网页啊,需要占用多少空间呀!!!
其实,不麻烦,不用额外占用任何空间,也不用真实的创建任何网页,你所有的程序几乎都不用动,只需要在Global.asax加上几行代码就行了.
不信,我们就继续阐述一下具体实现方法.
我们是通过捕获用户的请求,然后通过RewritePath来实现的:
这是我程序中的一段代码,它就负责把上面的那些请求转化为真正的页面请求,
我们是通过正则表达式来区分各种类别的请求的:
protected void Application_BeginRequest(Object sender, EventArgs e)
                {                                                                       
                        string url = Request.Url.AbsoluteUri ;
                        string strMatch = @"http://www.2shoushichang.com/([^/]+)/" ;
                       
                        string newUrl = "" ;
                        string strCmd = SplitInfo(url,strMatch) ;
                        if (strCmd != null)
                        {
                                switch(strCmd.ToLower())
                                {

                                        case "product":
                                                strMatch = @"/product/(d+).aspx" ;
                                                string strProductId = SplitInfo(url,strMatch) ;
                                               
                                                if (strProductId != null)
                                                {
                                                        newUrl = string.Format("..\Product.aspx?id={0}",strProductId) ;
                                                        this.Context.RewritePath(newUrl) ;       
                                                }
                                                break ;
                               
                                        case "midtype"://s-100100-All-2.aspx
                                                strMatch = @"/midtype/(S+-d+-S+-d+).aspx" ;
                                                string strResult = SplitInfo(url,strMatch) ;
                                               
                                                if (strResult != null)
                                                {
                                                        string[] strParam = strResult.Split('-') ;//MidtypeList.aspx?id=100100&city=威海&type=s&Page=3
                                                        if (strParam.Length != 4)
                                                                break ;
                                                        string city = AppGlobal.GetCityNameByCode(strParam[2]) ;
                                                        newUrl = string.Format("..\MidtypeList.aspx?type={0}&id={1}&city={2}&page={3}",strParam[0],strParam[1],city,strParam[3]) ;
                                                        this.Context.RewritePath(newUrl) ;       
                                                }
                                                break ;                                       
                                        case "其它处理":
                                                break;
                                        default:
                                                break ;
                                }

                        }                       
                }

posted @ 2007-11-22 23:37  缘于2046  阅读(193)  评论(0编辑  收藏  举报