好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php伪静态的写法,apache伪静态规则 - php高级应用

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

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

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

<?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程序实现伪静态url,伪静态方法二:

<?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 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程序实现伪静态url,伪静态方法三:

<?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程序实现伪静态url,伪静态方法四:

<?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!' );  ?> 

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

一、Apache配置:

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

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

启用.htaccess

AllowOverride None 修改为:AllowOverride All

二、Rewrite写法:

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

RewriteEngine on  //启动rewrite引擎   RewriteRule ^/index([0-9]*).html$ /index.php?id= $1   //[([0-9]*)] 代表范围 用(.*)代表所有,下同。   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 追加请求字符串

查看更多关于php伪静态的写法,apache伪静态规则 - php高级应用的详细内容...

  阅读:40次