首页 > 代码库 > 网站页面静态化详解

网站页面静态化详解



     
URL静态化
    静态化一直以来都是最基本的seo要求之一,但近一两年seo行业对是否一定要做静态化有了一些观念上的改变。
  


为什么静态化
  现在的网站绝大多数是数据库驱动,页面由程序实时生成,而不是其的在服务器上有一个静态html文件存在。当用户访问一个网址时,程序根据url中的参数调用数据库数据,实时生成页面内容。因此动态页面相对应的url原始状态也是动态的,包含问号、等号及参数,如下面这种典型论坛的url:
       3w点website点com/viewthread.php?tid=1234&&page=1
搜索引擎在发展初期(2006年—2007年)一般不太愿意爬行和收录动态url,主要原因是可能陷入无限循环或收录大量重复内容,造成资源极大浪费。最典型的无限循环就是某些网站上出现的万年历,很多博客都按时间存档,一些宾馆、肮班查询网站都经常出现万年历形式。
  


搜索引擎蜘蛛碰到万年历,如果一直跟踪上面的链接,可以不停地点击下一月、下—年,无穷无尽陷入无限循环,每一个日期对应的页面内容也没什么区别。真实用户一眼就能看出这是个日历,但搜索引擎蜘蛛面对的只是一串代码,不一定能判断出其实这是个万年历。
有时就算不存在无限循环,动态url也可能造成大量复制页面。
比如url:
         3w点website点com/viewthread.php?tid=1234&&page=1
和url:
       3w点website点com/viewthread.php?page=1&&tid=1234
很可能是完全一样的内容。url中参数顺序不同就是不同的网址,但调用参数一样,因此页面内容是一样的。如果CMS系统设计不周全,这些url都可能出现在网站上。
  更麻烦的是,有时某些参数可以是任意值,服务器都能正常返回页面,虽然内容全是一样或非常相似的。例如,上面中的参数1234改为5678或其他什么数字,服务器很可能也返回200状态码。
  所以以前的搜索引擎对动态url敬而远之,要想网站页面被充分收录,站长需要把动态url转化为静态。
怎样静态化
   最常见的方法是使用服务器的url重写模块,在AMP服务器上一般使用mod_rewrite模块,Windows服务器也有功能相似的ISAPI等模块。以LAMP服务器为例,要想把url:
       3w点website点com/product.php?id=123
   静态化为:
       3w点website点com/product/=123
   需要启用服务器mod_rewrite模块,然后在上.hatccess文件中写入如下代码:
   RewriteRule/product/([0-9]+)/product.php?id=$1
url重写代码基于正则表达式,每个网站的动态url结构不同,服务器设置也可能不同,代码也就不同。正则表达式的写法比较复杂,千变万化,通常需要程序员编写。在写url静态化代码时必须非常小心,错了一个字符,多了一个斜杠等微小的不同,都可能造成灾难性的后果。
严格来说,这里所说的url静态化应该称为“伪静态化”,也就是说服务器还是不存在相应的文件,用户访问时还是动态生成页面,只不过通过url重写技术使网址看起来像是静态的。也有的CMS系统可以实现真正静态化,站长增添产品或文章后,系统会自动生成真实存在的静态的html文件。但是对搜索引擎来说,真正的静态与伪静态没有区别。
url不需要静态化吗
  近两三年搜索引擎对动态url的抓取有了很大进步。一般来说url中有两三个参数,对收录不会造成多大影响。权重高的域名,再多几个问号也不是问题。不过一般来说还是建议将静态化,既能提高用户体验,又能降低收录难度。