PHP实现URL静态化

来源:互联网 发布:武汉有编程学 编辑:程序博客网 时间:2024/05/18 04:53

从今天开始会陆续穿插一些PHP的使用技巧,以更方便大家在基础的学习过程中,对PHP能有一个更清晰的认识和使用。

现在网上的绝大多数页面都是动态页面,而我们为了保证对搜索引擎友好,让搜索引擎收录更加方便,因此需要把动态页面进行静态化,但如何实现静态就需要我们从程序方面进行考虑了。

对PHP来讲,实现程序页面静态化有两个方式:生成真正的静态化页面,另一种是就是伪静态,下面我就对这两种方式分别进行详细的介绍和说明。

真正的静态化页面

真正的静态化页面是通过生成静态的html页面,并采用采用某种机制定时刷新静态页面,这种方式对用户访问来说效率最高,能够支持较大的访问量,同时对后台数据库的操作大大降低,能够让有限的服务器资源做更多其他的工作。但这种方式也有一个弊端,就是对服务器程序有一定要求,如果网站的内容很庞大,在生成静态页面及进行存储读取方面可能就会有一些影响,不过采用合理的机制可以减少和避免这种情况发生。

这种方式适合那种CMS系统,特别是内容添加上去以后,不会或很少会进行频繁修改更新操作的网站。比较常见的方式是使用模版程序进行实现,在PHP中,最常用的大概应该是smarty了吧。

PHP实现伪静态

再有一种就是伪静态方式,即用户和搜索引擎看到的是.html后缀的静态页面,但实际上它还是动态程序,只不过是通过某种方式进行了伪装。

这种方式也有两种实现方式:

第一种是通过Web服务器,进行URL Rewrite实现链接的静态化,下面以apache为例来说明一下其实现方式。对于有服务器配置权限的用户,推荐使用Apache的mod_rewrite模块,这里假设已经安装好mod_rewrite模块。打开Apache的配置文件,找到相应主机的部分,添加以下代码:

RewriteEngine OnRewriteRule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2

然后在shell里执行service httpd reload,让Apache重新载入配置就好了。

但对于我们大多数人来讲,我们购买的只是空间,根本没有权限去修改apache的配置文件,那就没有办法了吗?不,当然有办法,首先我们进入到我们的空间的根目录下(如public_html),然后建立一个文件名为.htaccess的文件。这个文件内容基本如下:

RewriteEngine onRewriteBase /RewriteRule ^post/([0-9]+).htm read.php?1RewriteRule ^post/([0-9]+)_([0-9]+).htm read.php?1&page=2RewriteRule ^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静态化的方式就是上面这些了,如果你仔细看代码和命令的话,会发现,静态化其实质上都是一样的,都是通过某种手段把动态化的链接进行转换成为静态链接(真正静态化页面不算)。

原创粉丝点击