友好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
这样的吧
今天我就是公布下这种方法的实现,并独立出最简单的代码
函数如下,没封装成类,主要是没必要,用函数能方便些
复制代码代码如下:
/**
*获得友好的URL访问
*
*@accesspublic
*@returnarray
*/
functiongetQueryString(){
$_SGETS=explode("/",substr($_SERVER['PATH_INFO'],1));
$_SLEN=count($_SGETS);
$_SGET=$_GET;
for($i=0;$i
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
*
*@accesspublic
*@paramarray$arr
*@returnstring
*/
functionsetUrl($arr){
global$Global;
$queryString='';
if($Global['urlmode']==2){
foreach($arras$k=>$v){
$queryString.=$k.'/'.$v.'/';
}
}
$queryString.=$Global['urlsuffix'];
return$queryString;
}
?>
使用很简单
复制代码代码如下:
$_GET=getQueryString();
?>
但是这样还不行,这样只能实现
http://www.xxx.com/index.php/module/show/action/list/page/7这样的
中间多了个index.php为此我们要把他去掉,只好重写
但是有些文件又不希望这样,比如样式图片,那就放条件里
建立一个.htaccess文件
复制代码代码如下:
RewriteEngineon
RewriteCond$1!^(index\.php|css|pics|themes|js|robots\.txt)
RewriteRule^(.*)$index.php/$1[L]
现在OK了,赶快去测试吧
复制代码代码如下:
$_GET=getQueryString();
print_r($_GET);
?>