当前位置:首页 > PHP教程 > php高级应用 > 列表

php伪静态的写法,apache伪静态规则

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-08 10:30:34 浏览: 评论:0 

在php中我们要做伪静态可以直接利用php来处理url,但这种伪静态不是标准的可以说看起来像水货一样的,只是找个心里舒服了,当然如果要实现真正的伪静态我们可以使用apache Rewrite伪静态模块来实例,下面大家来看看.

php程序实现伪静态url,伪静态方法一:

  1. <?php 
  2. // localhost/php100/test.php?id|1@action|2 
  3. $Php2Html_FileUrl = $_SERVER["REQUEST_URI"]; 
  4. echo $Php2Html_FileUrl."<br>";// /php100/test.php?id|1@action|2 
  5. $Php2Html_UrlString = str_replace("?","",str_replace("/"""strrchr(strrchr($Php2Html_FileUrl"/"),"?"))); 
  6. echo $Php2Html_UrlString."<br>";// id|1@action|2 
  7. $Php2Html_UrlQueryStrList = explode("@"$Php2Html_UrlString); 
  8. print_r($Php2Html_UrlQueryStrList);// Array ( [0] => id|1 [1] => action|2 ) 
  9. echo "<br>"
  10. foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr
  11. $Php2Html_TmpArray = explode("|"$Php2Html_UrlQueryStr); 
  12. print_r($Php2Html_TmpArray);// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 ) 
  13. echo "<br>"
  14. $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1]; 
  15. //echo '假静态:$_GET变量<br />'; 
  16. print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 ) 
  17. echo "<br>"
  18. echo "<hr>"
  19. echo $_GET[id]."<br>";// 1 
  20. echo $_GET[action];// 2 
  21. ?> 

php程序实现伪静态url,伪静态方法二:

  1. <?php 
  2. // localhost/php100/test.php/1/2 
  3. $filename = basename($_SERVER['SCRIPT_NAME']); 
  4. echo $_SERVER['SCRIPT_NAME']."<br>";// /php100/test.php 
  5. echo $filename."<br>";// test.php 
  6. if(strtolower($filename)=='test.php'){ 
  7. if(!emptyempty($_GET[id])){ 
  8. $id=intval($_GET[id]); 
  9. echo $id."<br>"
  10. $action=intval($_GET[action]); 
  11. echo $action."<br>"
  12. }else
  13. $nav=$_SERVER['REQUEST_URI']; 
  14. echo "1:".$nav."<br>";// /php100/test.php/1/2 
  15. $script=$_SERVER['SCRIPT_NAME']; 
  16. echo "2:".$script."<br>";// /php100/test.php 
  17. $nav=ereg_replace("^$script","",urldecode($nav)); 
  18. echo $nav."<br>"// /1/2 
  19. $vars=explode("/",$nav); 
  20. print_r($vars);// Array ( [0] => [1] => 1 [2] => 2 ) 
  21. echo "<br>"
  22. $id=intval($vars[1]); 
  23. $action=intval($vars[2]); 
  24. echo $id.'&'.$action
  25. ?> 

php程序实现伪静态url,伪静态方法三:

  1. <?php 
  2.  
  3. function mod_rewrite(){ 
  4. global $_GET
  5. $nav=$_SERVER["REQUEST_URI"]; 
  6. echo $nav."<br>"
  7. $script_name=$_SERVER["SCRIPT_NAME"]; 
  8. echo $script_name."<br>"
  9. $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); 
  10. echo $nav."<br>"
  11. $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm 
  12. echo $nav."<br>"
  13. $vars = explode("/",$nav); 
  14. print_r($vars); 
  15. echo "<br>"
  16. for($i=0;$i<Count($vars);$i+=2){ 
  17. $_GET["$vars[$i]"]=$vars[$i+1]; 
  18. return $_GET
  19. mod_rewrite(); 
  20. $year=$_GET["year"];//结果为'2006' 
  21. echo $year."<br>"
  22. $action=$_GET["action"];//结果为'_add' 
  23. echo $action
  24. ?> 

php程序实现伪静态url,伪静态方法四:

  1. <?php 
  2. //利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分 
  3. if(@$path_info =$_SERVER["PATH_INFO"]){ 
  4. //正则匹配一下参数 
  5. if(preg_match("//(d+),(d+),(d+).html/si",$path_info,$arr_path)){ 
  6. $gid =intval($arr_path[1]); //取得值 1 
  7. $sid =intval($arr_path[2]); //取得值100 
  8. $softid =intval($arr_path[3]); //取得值8630 
  9. }else die("Path:Error!"); 
  10. //相当于soft.php?gid=1&sid=100&softid=8630 
  11. }else die('Path:Nothing!'); 
  12. ?> 

如果你有服务器权限我觉得还是使用apache伪静态.

一、Apache配置:

进入/etc/httpd/conf/目录下,打开httpd.conf文件,启用rewrite:

# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #

启用.htaccess

AllowOverride None 修改为:AllowOverride All

二、Rewrite写法:

服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件,代码如下:

  1. RewriteEngine on //启动rewrite引擎 
  2. RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范围 用(.*)代表所有,下同。 
  3. RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟目录  

三、mod_rewrite 规则修正符

1) R 强制外部重定向

2) F 禁用URL,返回403HTTP状态码。

3) G 强制URL为GONE,返回410HTTP状态码。

4) P 强制使用代理转发。

5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。

6) N 重新从第一条规则开始运行重写过程。

7) C 与下一条规则关联

如果规则匹配则正常处理,以下修正符无效

8) T=MIME-type(force MIME type) 强制MIME类型

9) NS 只用于不是内部子请求

10) NC 不区分大小写

11) QSA 追加请求字符串

12) NE 不在输出转义特殊字符 %3d$1 等价于 =$1

Tags: php伪静态 apache伪静态

分享到:

相关文章