Thinkphp6多应用隐藏应用名称,简化URL地址设置方法教程
第一步:我们需要安装多应用模式,thinkphp6默认是单应用模式
如果要使用多应用模式,你需要安装多应用模式扩展think-multi-app
。
composer require topthink/think-multi-app
注:thinkphp5.0->thinkphp5.1 是不需要安装相关模块,直接创建相关文件模块就可以
第二步:利用Nginx伪静态来设置达到我们想要简化URL效果
if (!-e $request_filename) {
rewrite ^/admin/(.*)$ /index.php?s=/admin/$1; //后台应用
rewrite ^/api/(.*)$ /index.php?s=/api/$1; //其他应用
rewrite ^((?!/home).*)$ /index.php?s=/home/$1; ##隐藏默认模块名 /home
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
注:设置完成记得重启一下Nginx服务哦
第二种方法可以增加应用入口来实现:
thinkphp6 允许为每个应用创建单独的入口文件而不通过index.php
入口文件访问多个应用
//这是前台应用:
前台访问:http://www.xxxx.com/xxx.html 这样的形式来访问
//这是后台应用:
后台访问:http://www.xxxx.com/sysusezan.php/test/index.html 这样的形式来访问
访问之后会出控制器不存在!!!!
下面使用方法来简化后端 url路径
/** * Url生成 * @param string $url 路由地址 * @param array $vars 变量 * @param bool|string $suffix 生成的URL后缀 * @param bool|string $domain 域名 * return string */ function adminurl(string $url = '', array $vars = [], $suffix = true, $domain = false) { $defalutModule = 'sysusezan'; $currentModule = app('http')->getName(); $string = (string) url($url, $vars, $suffix, $domain); $hideHomeName = true; // 是否去除url中默认模块名sysusezan/ if($hideHomeName && $currentModule == $defalutModule) { #去除url中默认模块名sysusezan $search = '/'.$defalutModule.'/'; $pos = stripos($string, $search); $string = substr($string, 0, $pos). '/'. substr($string, $pos + strlen($search)); } return $string; }
后台路径方法 “{:adminurl('test/index')}”而不是thinkphp内置方法url
如上就是我摸索thinkphp6隐藏多应用的方法,希望对你们有帮助