URL重写转向

把自己站点的内容全都静态页面化,最简单的做法自然是每个页面都用页面设计软件直接作成静态页面,这对小型站点不是难事,但是对页面总数上万的大中型站点,都用手工的静态页面设计就会带来高昂的成本和保存、修改上的困难。在这种情况下,资金雄厚的大网站会采用能在后台生成.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.siyizhu.com动态站点为例介绍一些简单的方法,读者可以根据自己网站的情况做调整。    
    
  网络栏目:http://www.siyizhu.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.siyizhu.com/content/3.html   同样能访问到刚才的页面。    
    
  另一个更通用的能将所有的动态页面做参数映射的表达式是:    
    
  RewriteRule   (.*?/.php)(/?["/]*)?/(["/]*)/(["/]*)(.+?)?   $1(?2$2&:/?)$3=$4?5$5:   [N,I]    
    
  这样就把http://www.siyizhu.com/foo.php?a=A&b=B&c=C表现成http://www.siyizhu.com/foo.php/a/A/b/B/c/C。    
    
  当然用URL重写转向而得的.html的URL实质上还是个动态页面,只是搜索引擎上的机器人及浏览器上的链接与正常的静态页面一摸一样,URL对用户的亲和度非常高。即便是在用模块方式运行的Apache下,这样或多或少都会有一些性能上的损失。同时如果真的把论坛这种更新非常快的内容也让Google搜索进去并不能方便用户,有时候还会带来很多负面影响。所以URL重写转向最合适的用途是一些中小型CMS动态页面发布平台,以便让搜索引擎能记录下主页内容从而让更多的人能搜索到。  
­
把自己站点的内容全都静态页面化,最简单的做法自然是每个页面都用页面设计软件直接作成静态页面,这对小型站点不是难事,但是对页面总数上万的大中型站点,都用手工的静态页面设计就会带来高昂的成本和保存、修改上的困难。在这种情况下,资金雄厚的大网站会采用能在后台生成.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.siyizhu.com动态站点为例介绍一些简单的方法,读者可以根据自己网站的情况做调整。    
    
  网络栏目:http://www.siyizhu.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.siyizhu.com/content/3.html   同样能访问到刚才的页面。    
    
  另一个更通用的能将所有的动态页面做参数映射的表达式是:    
    
  RewriteRule   (.*?/.php)(/?["/]*)?/(["/]*)/(["/]*)(.+?)?   $1(?2$2&:/?)$3=$4?5$5:   [N,I]    
    
  这样就把http://www.siyizhu.com/foo.php?a=A&b=B&c=C表现成http://www.siyizhu.com/foo.php/a/A/b/B/c/C。    
    
  当然用URL重写转向而得的.html的URL实质上还是个动态页面,只是搜索引擎上的机器人及浏览器上的链接与正常的静态页面一摸一样,URL对用户的亲和度非常高。即便是在用模块方式运行的Apache下,这样或多或少都会有一些性能上的损失。同时如果真的把论坛这种更新非常快的内容也让Google搜索进去并不能方便用户,有时候还会带来很多负面影响。所以URL重写转向最合适的用途是一些中小型CMS动态页面发布平台,以便让搜索引擎能记录下主页内容从而让更多的人能搜索到。  
­
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值