可能小伙伴们已经用过thinkPHP ,或者Laravel 之类的框架了;如果知道了这些框架的路由方式了, 感觉就好像打开的世界的大门了。 比如我们做一个登陆的接口: liaosp.top/admin/login/logindo 我们就很明确了,在admin模块 控制层为login, 方法为logindo 执行这个方法。 那这样的路由功能怎么实现的呢?很简单。我们动手敲一下: ![](https://box.kancloud.cn/62b1aa1523046f485e6b4aa40cbbe1e1_481x111.png) 我们创建三个文件,分别是index.php admin.php home.php 如何通过访问index.php 访问另外两个php 文件的内容? 在admin.php 中写入 ~~~ <?php class admin{ public function index(){ echo 'admin->index'; } } ~~~ home.php 写入 ~~~ <?php class home{ public function index(){ echo 'home->index'; } } ~~~ 在index.php 中写入: ~~~ <?php $url = $_SERVER['PATH_INFO'];//获取url 参数的内容 比如我们输入:http://index.com/index.php/home/index 得到:/home/index $ex = explode('/',$url); //控制层: if(empty($ex[1])){ $ex[1]= 'home'; } $controller = $ex[1]; //方法层: if(empty($ex[2])){ $ex[2] ='index'; } $action = $ex[2]; require $controller.'.php'; $class = new $controller; $class->$action(); ~~~ 这个时候我们就完成了,路由的分发了, 你可以在home中添加方法,用url 触发 localhost/home/test 就可以访问home 中的test () 方法 为了使url好看一点, 一般把index.php 文件隐藏: 下面是apche 的路由规则,把index.php 隐藏: ~~~ <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> ~~~ 放在与index.php 文件同级 这样我们访问url的时候就可以直接把url隐藏掉了 http://index.com/home/index 本章小节代码: 链接:https://pan.baidu.com/s/1o1g4Higqb6slDUH9_TrLPg 密码:jw5s