纯静态与伪静态的实现

    一,先看一下伪静态实现方法:
    有两种,第一种也是推荐的一种,就是在服务器端配置URL Rewrite,如果你用的apache请确认你的已经加载了rewrite模块,在http.conf中将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉即可(国内部分空间商已提供支持,国外基本上都支持),之后你只需在站点根目录加入自定义好的.htaccess即可,要想拥有个性化的URL,你还需要掌握正则表达式的运用。还有,提醒一下用张宴学长APMServ的用户,之前在本地调试一直不成功,原因是在http.conf文件中,当前的虚拟主机的AllowOverride默认为none导致的,将其修改为all即可,同时allow from也最好设为all.
形如:

<Directory “X:/www/htdocs”>     
 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.shtml
 AllowOverride None
 Order Deny,Allow
 Allow from all
</Directory>

     第二种实现伪静态的方法就是在PHP文件内部用$_SERVER函数获取处理QUERY_STRING,关于$_SERVER函数的应用,这里有比较详细的介绍。获得QUERY_STRING后,应用PHP自带的串操作函数解析即可,过程比较简单不再赘述,有兴趣的朋友可以查阅一下相关资料

     二,生成纯静态HTML文件:
     纯静态的HTML有效的提高的站点的安全性,同时也大大减轻了服务器的负荷,速度上也有一定的飞跃,唯一的缺陷是就是占用服务器的硬盘空间,就目前来说,时间比空间更宝贵,国内大型站点基本上都采用的这种方法。
   实现原理:提取缓冲区的数据写入指定文件中,当然这是个HTML的文件。主要利用ob函数,过程比较简单。ob_start()函数,打开输出缓冲区,利用ob_get_contents 获取内部缓冲区内容,将内容写入文件,关闭缓冲区。

以下是一段简单示例(只做示例,不适合实际应用):

<?php
   /**
     * 生成HTML静态页面
     * @param    $pram:传入id;$type:读取的php页面类型
     * @return     结果
   */
ob_start();
include “File.class.php”;   //自定义文件类
$pram=intval($_GET[‘id’]);
if(!isset($pram))
$pram=1;
include(‘read.php’);//假设读取数据流来自read.php
$content=ob_get_contents();
ob_end_clean();
$filename=”YOURPATH/NAME.htm”;
if($name=toHtml($filename,$content)){
    echo ‘The HTML file <b>’.$name.'</b> create success!<br />’;
    echo ‘Take a look! <a href=’.$name.’ target=”_blank”> Click Here</a><br />’;
}
else {
    echo ‘HTML file create failed!’;
}
/**
 * 生成静态HTML的函数
 * @param    $filename:路径+文件名,$content:写入内容
 * @since     2009.08.03
 * @access   public
 */
function toHtml($filename,$content)
{
   $f=new fileClass();
   if (!file_exists($filename)) {
        $f->createFile($filename);
     }
 if($f->writeinFile($filename,$content)) { 
     return $filename;
 }
     return false;
} // end func

?>

基本原理就是这样了,大家可以根据需求自行修改。
两种方法有个共同点,都是为了讨好搜索引擎,毋庸置疑良好的搜索引擎优化会给你的站点带来意想不到的收获。
方法介绍到此,希望它们能对你有所帮助。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注