ThinkPHP多APP以及域名绑定
文章目录
ThinkPHP框架多APP以及域名绑定
多应用安装
注意只能用composer 2.0或者更新的版本请求安装.
composer require topthink/think-multi-app
新建应用
新建一个admin应用和api应用.会自动生成对应的目录和基本文件.
php think build admin
php think build api
绑定域名
解析
推荐使用泛域名解析.比如我网站配置如下.
TP配置
实际上一个应用可以绑定多个域名.
比如 admin.getce.cn 和 lv.getce.cn 同时绑定了admin应用.
lv这个子域只有网站开启了调试的时候才绑定.
这种调试专用的域名是本地hosts文件中手动绑定的.
用于本地调试.本地测试没问题在上线.
config/app.php
$bind_arr = [
'api'=>'api',
'login'=>'login',
'admin'=>'admin',
'user'=>'user',
'cheat'=>'cheat',
];
if ( !ENV('APP_DEBUG',false) ){
$bind_arr['*'] ='blog';
}else{
$bind_arr['lv'] = 'admin';
$bind_arr['testapi'] = 'api';
$bind_arr['testuser'] = 'user';
$bind_arr['testlogin'] = 'login';
$bind_arr['testcheat'] = 'cheat';
}
return [
// 是否启用路由
'with_route' => true,
// 默认应用
'default_app' => 'blog',
// 应用映射(自动多应用模式有效)
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => $bind_arr,
// 禁止URL访问的应用列表(自动多应用模式有效)
'deny_app_list' => ['common'],
// 开启应用快速访问 如果你完全不需要单应用模式,也可以设置使用严格的多应用模式
'app_express' => true,
//多应用
'auto_multi_app' => true,
];
路由
多应用的是多应用自己设置的.
在应用目录新建一个route的目录
里面新建一个和应用同名的php文件
比如api应用就新建一个app/api/route/api.php
<?php
use think\facade\Route;
Route::get('/', function () {
return 'api服务器.';
});
//也可以用路由群组
//版本号
Route::group(':version',function (){
Route::group('user',function(){
Route::GET('getapi', ':version.user.User/getApi');
Route::GET('readall', ':version.user.User/readAll');
Route::GET('readmessage', ':version.user.User/readMessage')
->pattern(['blogid' => '\d+']);
});
})->allowCrossDomain();
中间件
全局中间件和应用自己的
全局的:
app/middleware.php
我开了全站session和CORS
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// \think\middleware\CheckRequestCache::class,
// 多语言加载
// \think\middleware\LoadLangPack::class,
// Session初始化
\think\middleware\SessionInit::class,
\think\middleware\AllowCrossDomain::class
];
应用自己的:
app/api/middleware.php
API鉴权用的,自己写的.
一般的应用不需要另外的中间件.
<?php
return [
\app\common\middleware\ApiCheck::class
];