可能小伙伴們已經用過thinkPHP ,或者Laravel 之類的框架了;如果知道了這些框架的路由方式了, 感覺就好像打開的世界的大門了。
比如我們做一個登陸的接口:
liaosp.top/admin/login/logindo
我們就很明確了,在admin模塊 控制層為login, 方法為logindo 執行這個方法。
那這樣的路由功能怎么實現的呢?很簡單。我們動手敲一下:

我們創建三個文件,分別是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