最好还是不要用多应用模式,后期坑比较多。
官方文档的意思是在多应用中想要url地址中不出现应用名,可以通过域名绑定来实现,就是要绑定二级域名
文档位置:https://www.kancloud.cn/manual/thinkphp6_0/1297876
准备安装tp6和部署这里不表,我们一步步来搞清楚tp6多引用模式
本地域名 :www.duo.com
1.安装多应用
composer require topthink/think-multi-app
创建默认应用index
刷新页面,发现报错了
这个时候怎么查看具体报错信息?复制一份.example.env
命名为.env
再次刷新,可以看到详细的报错信息
跟着提示我们创建控制器
这是命令行创建,单应用和多应用不太一样
文档:https://www.kancloud.cn/manual/thinkphp6_0/1037644
php think make:controller Index@Index --plain
然后写一个index方法
刷新页面,可以看到index这个默认应用可以访问到了
接着我们一口气直接创建一个网站后台应用
php think build admin
这个时候访问,域名 添加一个admin 即可直接访问
接着我们继续说,一般开发肯定是要使用强制路由,所去config/route.php
下如下两项目改成true
强制路由应该不难理解,完全匹配要是不知道含义的可以看文档解释
https://www.kancloud.cn/manual/thinkphp6_0/1037495
接着我们刷新页面,提示路由未定义
去admin应用下定义路由,直接把最外层的route目录复制一份到admin应用
刷新页面,又正常显示了
按照同样的方法,也复制一份route目录到Index应用,即可正常访问
拓展:平常在开发中可能不止是传统pc站的应用,可以能还有api和移动端的。
所以我们在创建应用的时候多半会出现以下几个模块
//分别是前台pc主站
php think build index
//后期可能会改版成前后端分离的
php think build indexapi
//传统后台管理
php think build admin
//后台的api接口
php think build adminapi
//传统的移动端应用(其实这个也是属于前台,如果这个移动端项目 是前后端分离的方式来做的话,那么直接用上面的indexapi接口就行,可以弄一个中间件,检测到是手机访问重定向到 m.xx.com 类似京东www.jd.com访问 如果是检测到手机访问 会自动跳转到 m.jd.com )
php think build mobile
接着我们继续讲,如何隐藏后台管理的入口地址?
比如 http://www.duo.com/admin 我不想让普通用户输入 admin 就直接进入后台的登录页面
我们可以这样做,通过应用映射 来隐藏入口地址,此时通过 /admin就不能访问了 ,上线后可以随意更改后台入口地址
接下来清理以下目录,我们把一些多余的目录删除
现在看起来要清楚很多了
接着我们继续来讲一个知识点,那就是api模块,现在几乎都是api前后端分离模式的
我们创建一个api应用
关于第一个api的版本控制问题(重点),有些时候有这样的场景,就是api第一个版本不能立马下线或者需要保留的时候,我们可以这样来进行升级
创建类
php think make:controller api@v1/User --plain
php think make:controller api@v2/User --plain
路由重新定义
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\facade\Route;
Route::group('v1', function () {
Route::get('user', 'v1.User/index');
});
Route::group('v2', function () {
Route::get('user', 'v2.User/index');
});
前面那个v1.
v2.
格式不理解的看文档
https://www.kancloud.cn/manual/thinkphp6_0/1037497
访问,这样就完成了对api版本的控制。
接着我们来讲一下,api开发的第二个知识点,二级域名路由访问api
意思就是由原来的
http://www.duo.com/api/v2/user
改成如下格式来进行访问
http://api.duo.com/v2/user
这种常见的操作,我们该怎么实现呢?
首先,我们要把二级域名 api.duo.com
解析到你的服务器的ip地址上,我这里本地测试就用phpstudy来模拟了
记得添加伪静态
解析好后,我们打开项目config/app.php
如下配置即可
访问测试,注意:这样配置后原来的路由地址访问依然有效。