第一种伪静态页面(拟静态)的方法(针对有服务器权限的):

http.conf 里 把mod_rewrite的#去掉

htacc 把 前面的option 改为all

RewriteEngine on
RewriteRule ^/t_(.*).html$ /test.php?id=$1? 输出成html格式

RewriteRule ^/t_(.*)/$ /test.php?id=$1 输出目录格式 *localhost/t_333/*

第二种伪静态页面(拟静态)的方法(针对无服务器权限的):

在根目录建文件 .htaccess

.htaccess

RewriteEngine on
RewriteRule ^/test.html$ /test.php?id=$1?

#ErroeDocument 404 /test.php

关于规则的写法,请参考其它文档。

第三种伪静态页面(拟静态)的方法(用程序进行处理)分为四种方式:

	
  • <?php?
  • //伪静态方法一 ?
  • ?
  • //?localhost/php100/test.php?id|1@action|2 ?
  • $Php2Html_FileUrl?=?$_SERVER["REQUEST_URI"]; ?
  • echo?$Php2Html_FileUrl."<br>";//?/php100/test.php?id|1@action|2 ?
  • $Php2Html_UrlString?=?str_replace("?","",str_replace("/",?"",?strrchr(strrchr($Php2Html_FileUrl,?"/"),"?"))); ?
  • echo?$Php2Html_UrlString."<br>";//?id|1@action|2 ?
  • $Php2Html_UrlQueryStrList?=?explode("@",?$Php2Html_UrlString); ?
  • print_r($Php2Html_UrlQueryStrList);//?Array?(?[0]?=>?id|1?[1]?=>?action|2?) ?
  • echo?"<br>"; ?
  • foreach($Php2Html_UrlQueryStrList?as?$Php2Html_UrlQueryStr) ?
  • { ?
  • $Php2Html_TmpArray?=?explode("|",?$Php2Html_UrlQueryStr); ?
  • print_r($Php2Html_TmpArray);//?Array?(?[0]?=>?id?[1]?=>?1?)?;?Array?(?[0]?=>?action?[1]?=>?2?) ?
  • echo?"<br>"; ?
  • $_GET[$Php2Html_TmpArray[0]]?=?$Php2Html_TmpArray[1]; ?
  • } ?
  • //echo?'假静态:$_GET变量<br?/>'; ?
  • print_r($_GET);?//?Array?(?[id|1@action|2]?=>?[id]?=>?1?[action]?=>?2?) ?
  • echo?"<br>"; ?
  • echo?"<hr>"; ?
  • echo?$_GET[id]."<br>";//?1 ?
  • echo?$_GET[action];//?2 ?
  • ?>?
  • 	
  • <?php?
  • //伪静态方法二 ?
  • ?
  • //?localhost/php100/test.php/1/2 ?
  • $filename?=?basename($_SERVER['SCRIPT_NAME']); ?
  • echo?$_SERVER['SCRIPT_NAME']."<br>";//?/php100/test.php ?
  • echo?$filename."<br>";//?test.php ?
  • ?
  • if(strtolower($filename)=='test.php'){ ?
  • ?if(!empty($_GET[id])){ ?
  • ??$id=intval($_GET[id]); ?
  • ??echo?$id."<br>"; ?
  • ??$action=intval($_GET[action]); ?
  • ??echo?$action."<br>"; ?
  • ?}else{ ?
  • ??$nav=$_SERVER['REQUEST_URI']; ?
  • ??echo?"1:".$nav."<br>";//?/php100/test.php/1/2 ?
  • ??$script=$_SERVER['SCRIPT_NAME']; ?
  • ??echo?"2:".$script."<br>";//?/php100/test.php ?
  • ??$nav=ereg_replace("^$script","",urldecode($nav)); ?
  • ??echo?$nav."<br>";?//?/1/2 ?
  • ??$vars=explode("/",$nav); ?
  • ??print_r($vars);//?Array?(?[0]?=>?[1]?=>?1?[2]?=>?2?) ?
  • ??echo?"<br>"; ?
  • ??$id=intval($vars[1]); ?
  • ??$action=intval($vars[2]); ?
  • ?} ?
  • ?echo?$id.'&'.$action; ?
  • } ?
  • ?>?
  • 	
  • <?php?
  • //伪静态方法三 ?
  • ?
  • ?
  • function?mod_rewrite(){ ?
  • global?$_GET; ?
  • $nav=$_SERVER["REQUEST_URI"]; ?
  • echo?$nav."<br>"; ?
  • $script_name=$_SERVER["SCRIPT_NAME"]; ?
  • echo?$script_name."<br>"; ?
  • $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); ?
  • echo?$nav."<br>"; ?
  • $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm ?
  • echo?$nav."<br>"; ?
  • $vars?=?explode("/",$nav); ?
  • print_r($vars); ?
  • echo?"<br>"; ?
  • for($i=0;$i<Count($vars);$i+=2){ ?
  • $_GET["$vars[$i]"]=$vars[$i+1]; ?
  • } ?
  • return?$_GET; ?
  • } ?
  • mod_rewrite(); ?
  • $year=$_GET["year"];//结果为'2006' ?
  • echo?$year."<br>"; ?
  • $action=$_GET["action"];//结果为'_add' ?
  • echo?$action; ?
  • ?>?
  • 	
  • <?php?
  • //伪静态方法四 ?
  • ?
  • //利用server变量?取得PATH_INFO信息?该例中为?/1,100,8630.html???也就是执行脚本名后面的部分 ?
  • if(@$path_info?=$_SERVER["PATH_INFO"]){ ?
  • //正则匹配一下参数 ?
  • if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){ ?
  • $gid?????=intval($arr_path[1]);?//取得值?1 ?
  • $sid?????=intval($arr_path[2]);???//取得值100 ?
  • $softid???=intval($arr_path[3]);???//取得值8630 ?
  • }else?die("Path:Error!"); ?
  • //相当于soft.php?gid=1&sid=100&softid=8630?
  • }else?die('Path:Nothing!'); ?
  • ?>?
  • 以上就是本文介绍的几种PHP伪静态的方法,希望对大家有所帮助。

    自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

    本文链接地址: php静态化页面——伪静态页面(拟静态)的几种方法 http://www.chhua.com/web-note372

    相关笔记

    更多