1)创建一个存放其他类的文件夹将我们创建好的类存放进去 然后将调用这个类的路径进行修改
2)当我们的网址是www.xxx.com/index/index是我们想要将他访问的路径改为index控制器以及index方法,实际我们访问的是 www.xxx.com/index.php/index/index
3) 首先我们要隐藏index.php, 获取路径的参数部分 返回相应的控制器与方法名
4)我们要在根目录下创建一个.htaccess的文件 内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
5)我们可以打印$_SERVER的变量看一下里面是否有我们想要获得的值 ,我们须要的是它里面url路径值,将这条值区出来有的路径名不同有REQUEST_URL还有REDIRECT_URL变量,当我们网址后面没有参数变量后面是‘/’或是没有参数是我们给他一个判断如果为空时我们给他一个提示,否则我们定义一个变量将REQUEST_URL里面的值获取出来 ,将这个值用explode()分隔符分割我们的字符串;
6)将url里面的多余部分转化成get 将上面的用完的key值进行销毁,然后进行循环例如:
我的默认控制器与方法都是index/index
以下为源码
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/') {
$path = $_SERVER['REQUEST_URI'];
$patharray = explode('/',trim($path,'/'));
if (isset($patharray[0])) {
$this->controller = $patharray[0];
}
unset($patharray[0]);
if (isset($patharray[1])) {
$this->action = $patharray[1];
unset($patharray[1]);
} else {
$this->action = 'index';
}
$count = count($patharray) + 2; //定义2是因为我把前面的index/index删除后 key从2开始的 所以长度也得加2
$i = 2;
while ($i < $count) {
if (isset($patharray[$i + 1])) {
$_GET[$patharray[$i]] = $patharray[$i + 1];
}
$i = $i + 2;
}
p($_GET);
} else {
$this->controller = 'index';
$this->action = 'index';
}