php 友好URL的实现(吐血推荐)

  友好URL的实现(吐血推荐)

  大家经常看到别的站的URL是这样的吧?

  http://www.xxx.com/module/show/action/list/page/7

  或者

  http://xx.com/module/show/action/show/id/8.shtml 带扩展名的

  或者

  http://xx.com/module/show/action/show/id/8?word=ss&age=11

  这样的吧

  今天我就是公布下这种方法的实现,并独立出最简单的代码

  函数如下,没封装成类,主要是没必要,用函数能方便些

  

复制代码 代码如下:

  <?php

  /**

  * 获得友好的URL访问

  *

  * @access public

  * @return array

  */

  function getQueryString(){

  $_SGETS = explode("/",substr($_SERVER['PATH_INFO'],1));

  $_SLEN = count($_SGETS);

  $_SGET = $_GET;

  for($i=0;$i<$_SLEN;$i+=2){

  if(!empty($_SGETS[$i]) && !empty($_SGETS[$i+1])) $_SGET[$_SGETS[$i]]=$_SGETS[$i+1];

  }

  $_SGET['m'] = !empty($_SGET['m']) && is_string($_SGET['m']) ? trim($_SGET['m']).'Action' : 'indexAction';

  $_SGET['a'] = !empty($_SGET['a']) && is_string($_SGET['a']) ? trim($_SGET['a']) : 'run';

  return $_SGET;

  }

  /**

  * 生成链接URL

  *

  * @access public

  * @param array $arr

  * @return string

  */

  function setUrl($arr){

  global $Global;

  $queryString='';

  if($Global['urlmode']==2){

  foreach($arr as $k=> $v){

  $queryString.=$k.'/'.$v.'/';

  }

  }

  $queryString.=$Global['urlsuffix'];

  return $queryString;

  }

  ?>

  使用很简单

  

复制代码 代码如下:

  <?php

  $_GET= getQueryString();

  ?>

  但是这样还不行,这样只能实现

  http://www.xxx.com/index.php/module/show/action/list/page/7 这样的

  中间多了个index.php 为此我们要把他去掉,只好重写

  但是有些文件 又不希望这样,比如 样式 图片,那就放条件里

  建立一个 .htaccess文件

  

复制代码 代码如下:

  RewriteEngine on

  RewriteCond $1 !^(index\.php|css|pics|themes|js|robots\.txt)

  RewriteRule ^(.*)$ index.php/$1 [L]

  现在OK了,赶快去测试吧

  

复制代码 代码如下:

  <?php

  $_GET= getQueryString();

  print_r($_GET);

  ?>