2010年11月17日星期三

无需转换成HTML页面,让Google能搜索到动态页面

Internet上网站数量的增多,网站的宣传越来越多地依赖搜索引擎的搜索结果,怎样让搜索引擎更好地为站点服务与提高站点的访问量有着非常密切的关系。搜索引擎并非是上帝的赠送给Internet产物,搜索引擎其本身既是站点,同时也是由各个程序来建设的。而各种搜索引擎一般都使用一种称为搜索引擎机器人的技术,这种机器人会根据一定规则的在Internet上访问站点,并把有价值的页面收集到搜索引擎的缓存数据库保存。一旦有用户来搜索,那么搜索引擎会直接在其缓存中搜索结果,并将结果报给用户。



搜索机器人的查找规则比较复杂,但是其中有一个很重要的规则,就是搜索机器人对静态页面的处理能力要强于动态页面。一般情况下搜索机器人简单的把静态页面理解为扩展名成.html或者.htm的页面,而将扩展名是.ASP、.PHP及.CGI的页面理解成动态页面。换言之如果一个站点都是.html页面,那么它被搜索引擎全文搜到的可能性就要比.PHP的页面高几个数量级,当然因此而来的访问量也会高出很多。

如何把自己站点的内容全都静态页面化,最简单的做法自然是每个页面都用页面设计软件直接作成静态页面,这对小型站点不是难事,但是对页面总数上万的大中型站点,都用手工的静态页面设计就会带来高昂的成本和保存、修改上的困难。在这种情况下,资金雄厚的大网站会采用能在后台生成.html文件的内容管理(CMS)系统管理。无论是手工做的.html文件,还是后台生成的.html文件,都能实现真正意义上的静态页面。

但仍有相当数量的中型站点采用动态发布的CMS系统,动态系统对网页的更新效率很高,可在后台发排的同时在前台显示,缺点是要消耗相当量的服务器资源,同时得到一堆扩展名为.ASP.PHP的页面。要完全替换CMS系统并不容易,而且具有静态页面后台生成功能的成熟CMS系统价格都很高昂。

动态CMS系统有无简单获取.html文件扩展名的方法?当然有,采用URL重写转向功能。

对URL重写转向的支持,在Apache服务器上由一非缺省模块(mod_rewrite)来完成,这个模块的功能很强大,同时也很烦琐。而在IIS下也同样有类似的模块,分别是ISAPI REWRITE及IIS REWRITE。无论是在Apache下还是在IIS下,重写转向的语法都基于正则表达式,只有少量的不同。当然对一般的应用,没必要把所有手册和说明文档翻熟,下面以一个虚拟的http://www.1234567.com动态站点为例介绍一些简单的方法,读者可以根据自己网站的情况做调整。

网络栏目:http://www.1234567.com/content.asp?sort=3

在IIS的安装isapirewrite的情况下只须设置:RewriteRule /content/(d+).html /content.asp?sort=$1 [N,I]

这样就将:/content/3.html 这样的请求映射成为/content.asp?sort=3

然后通过:http://www.1234567.com/content/3.html同样能访问到刚才的页面。

另一个更通用的能将所有的动态页面做参数映射的表达式是:

RewriteRule (.*?.php)(?["/]*)?/(["/]*)/(["/]*)(.+?)? $1(?2$2&:?)$3=$4?5$5: [N,I]

这样就把http://www.my123.com/foo.php?a=A&b=B&c=C表现成 http://www.my123.com/foo.php/a/A/b/B/c/C。

当然用URL重写转向而得的.html的URL实质上还是个动态页面,只是搜索引擎上的机器人及浏览器上的链接与正常的静态页面一摸一样,URL对用户的亲和度非常高。即便是在用模块方式运行的Apache下,这样或多或少都会有一些性能上的损失。同时如果真的把论坛这种更新非常快的内容也让Google搜索进去并不能方便用户,有时候还会带来很多负面影响。所以URL重写转向最合适的用途是一些中小型CMS动态页面发布平台,以便让搜索引擎能记录下主页内容从而让更多的人能搜索到。

没有评论:

发表评论