> 在TP6中如果采用了多应用模式,每个应用的路由定义和匹配都是独立的 应用路由都在 `app/应用/route` 目录下定义,应用路由定义文件示例如下: ``` app/index/route/web.php app/index/route/api.php app/admin/route/web.php ``` > 特别注意:好好体会这句话 ``` 应用的路由规则其实是定义的入口文件(或者应用名)后面的URL部分,而不包含应用。 ``` 控制器方法默认访问方式(pathinfo):/应用/控制器/方法 应用路由定义的只是应用后面的部分:也就是简化的是 `控制器/方法` > 举例:应用路由只能定义应用名后面的部分,应用名未能做简化 **创建文章控制器** ```php <?php namespace app\index\controller; class Article { public function detail($id) { return '文章id: ' . $id; } } ``` **创建index应用路由定义文件:`app/index/route/web.php`** ```php <?php // index应用路由定义文件 use think\facade\Route; Route::get('art/:id', 'article/detail'); ``` ``` /index/article/detail/id/1 定义成为 /index/art/1 ``` **使用路由访问**  > 隐藏路由中的应用名 **方案一:入口文件绑定应用** 修改入口文件 `public/index.php`,将以下内容 ``` $response = $http->run(); ``` 修改为(添加name方法使其绑定到指定的应用) ``` $response = $http->name('index')->run(); ``` 此时路由中必须省略应用名:`art/12`  **方案二:子域名绑定应用** 1、配置`hosts`:`C:\Windows\System32\drivers\etc\hosts` ```php 127.0.0.1 tp6.cy 127.0.0.1 liang.tp6.cy ``` 2、apache 虚拟主机配置文件,先保证两个域名都能访问当前项目 ```php <VirtualHost *:80> DocumentRoot "E:\www\thinkphp\tp6\public" ServerName tp6.cy ServerAlias liang.tp6.cy </VirtualHost> ``` 3、修改配置文件:`config/app.php`,添加`域名绑定` + 键名:liang 代表当前域名的二级域名前缀,即 `liang.tp6.cy` + 键值:index 代表应用名 + 以下配置作用:将二级域名 `liang.tp6.cy` 绑定到 `index应用` ```php 'domain_bind' => [ 'liang' => 'index' ], ``` 