PHP技巧系列 – PHP实现URL静态化
时间:2010-09-21 来源:netlawe
从今天开始会陆续穿插一些PHP的使用技巧,以更方便大家在基础的学习过程中,对PHP能有一个更清晰的认识和使用。
现在网上的绝大多数页面都是动态页面,而我们为了保证对搜索引擎友好,让搜索引擎收录更加方便,因此需要把动态页面进行静态化,但如何实现静态就需要我们从程序方面进行考虑了。
对PHP来讲,实现程序页面静态化有两个方式:生成真正的静态化页面,另一种是就是伪静态,下面我就对这两种方式分别进行详细的介绍和说明。
真正的静态化页面
真正的静态化页面是通过生成静态的html页面,并采用采用某种机制定时刷新静态页面,这种方式对用户访问来说效率最高,能够支持较大的访问量,同时对后台数据库的操作大大降低,能够让有限的服务器资源做更多其他的工作。但这种方式也有一个弊端,就是对服务器程序有一定要求,如果网站的内容很庞大,在生成静态页面及进行存储读取方面可能就会有一些影响,不过采用合理的机制可以减少和避免这种情况发生。
这种方式适合那种CMS系统,特别是内容添加上去以后,不会或很少会进行频繁修改更新操作的网站。比较常见的方式是使用模版程序进行实现,在PHP 中,最常用的大概应该是smarty了吧。
PHP实现伪静态
再有一种就是伪静态方式,即用户和搜索引擎看到的是.html后缀的静态页面,但实际上它还是动态程序,只不过是通过某种方式进行了伪装。
这种方式也有两种实现方式:
第一种是通过Web服务器,进行URL Rewrite实现链接的静态化,下面以apache为例来说明一下其实现方式。对于有服务器配置权限的用户,推荐使用Apache的 mod_rewrite模块,这里假设已经安装好mod_rewrite模块。打开Apache的配置文件,找到相应主机的部分,添加以下代码:
RewriteEngine On RewriteRule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2然后在shell里执行service httpd reload,让Apache重新载入配置就好了。
但对于我们大多数人来讲,我们购买的只是空间,根本没有权限去修改apache的配置文件,那就没有办法了吗?不,当然有办法,首先我们进入到我们的空间的根目录下(如public_html),然后建立一个文件名为.htaccess的文件。这个文件内容基本如下:
RewriteEngine on RewriteBase / RewriteRule ^post/([0-9]+).htm read.php?1 RewriteRule ^post/([0-9]+)_([0-9]+).htm read.php?1&page=2 RewriteRule ^post/([0-9]+)_([0-9]+)_([0-9]+).htm read.php?1&page=2∂=3这实际上也是一种重写的方式,这种方式适合与我们广大的个人站长。另一种实现伪静态的方式就是通过程序来进行实现了,如果你对程序实现感兴趣,就可以使用这种方式实现:
函数代码:
function mod_rewrite(){ if ( isset ( $_SERVER [ ’ PATH_INFO ’ ])){ $url = substr ( $_SERVER [ ’ PATH_INFO ’ ] , 1 ); $url = explode ( ’ / ’ , $url ); foreach ( $url as $key => $value ){ if ( $key % 2 != 1 ){ if ( $value != ’’ ) $_GET [ $value ] = $url [ $key + 1 ]; $querystring [] = $value . ’ = ’ . $url [ $key + 1 ]; } } $_SERVER [ ’ QUERY_STRING ’ ] = implode ( " & " , $querystring ); $_SERVER [ ’ PHP_SELF ’ ] = substr ( $_SERVER [ ’ PHP_SELF ’ ] , 0 , strpos ( $_SERVER [ ’ PHP_SELF ’ ] , ’ .php ’ ) + 4 ); $_SERVER [ ’ REQUEST_URI ’ ] = $_SERVER [ ’ PHP_SELF ’ ] . ’ ? ’ . $_SERVER [ ’ QUERY_STRING ’ ]; } }
在你的程序开始引用该函数,然后直接调用mod_rewrite()函数就可以进行转换了。
如原始地址:http://www.hongxincao.com/test.php?arc=231
则转换后的地址为:http://www.phpweblog.net/test.php/arc/231
基本利用PHP实现url静态化的方式就是上面这些了,如果你仔细看代码和命令的话,会发现,静态化其实质上都是一样的,都是通过某种手段把动态化的链接进行转换成为静态链接(真正静态化页面不算)。
好了,关于PHP实现URL静态化的内容就介绍到这里了,有什么问题欢迎大家与我共同交流哦。
文章来源:红心草博客
原文地址:http://www.hongxincao.com/archives/303.html