thinkphp6配置多应用项目及多域名访问路由app配置

news2024/11/20 22:11:49

这里写一写TP6下配置多应用。TP6默认是单应用模式(单模块),而我们实际项目中往往是多应用的(多个模块),所以在利用TP6是就需要进行配置,开启多应用模式

1、安装ThinkPHP6 

1.1安装ThinkPHP6.0框架 

从6.0开始安装方式就改成了composer进行安装了,进入到WEB根目录,打开CMD,在命令终端中输入下面的命令,

composer create-project topthink/think tp921

单应用模式很简单,直接使用就可以了,我们现在需要的是多应用模式,多应用模式和单应用模式区别就在app目录结构,下面我们来一步一步实现。

1.2安装think-view扩展

新版框架默认只能支持PHP原生模板,如果需要使用think Template模板引擎,需要安装think-view扩展(扩展会自动安装think Template依赖库)

使用composer安装think-view扩展,进入到项目根目录,打开CMD,在命令终端中输入下面的命令

composer require topthink/think-view

如果不安装扩展,使用在控制器使用 “return view()” 时,会报错。

2、配置多应用模式

2.1安装多应用模式扩展think-multi-app

使用composer安装多应用模式扩展think-multi-app,进入到项目根目录,打开CMD,在命令终端中输入下面的命令

composer require topthink/think-multi-app

2.2删除app目录下的文件

安装完成后,删除项目的中app目录下的controller文件夹,TP是根据是否有这个文件夹来判断单应用模式还是多应用模式的,所以这个必须删除

2.3创建应用项目

删除完成之后使用命令来快速创建多应用(进入到项目根目录,打开CMD,在命令终端中输入下面的命令),这里我创建了两个应用,index和admin

php think build index
php think build admin
php think build api

2.4修改config/app.php文件

修改配置文件开启多应用模式,在config/app.php文件下增加以下内容(如果没有 auto_multi_app 这个配置项,则手动加入进去,并将其值设置为true.)

    // 开启自动多模式
    'auto_multi_app' => true,

至此多应用模式已经配置完毕了,这样一个简单的多应用开发模式就完成了

3、测试并且访问多应用

访问不同应用下的控制器的方法:http://域名/index.php/应用名称/控制器/方法名

直接访问域名 或 访问域名下index.php,这时访问为index应用

访问admin应用,需要指定admin.php入口文件 或者admin应用

>>>>>>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. 默认的多应用访问规则是 localhost:端口号/index.php/应用名称/控制器/控制方法


4、其他配置

 4.1配置默认应用

修改config/app.php,修改以下配置,没有的话就直接新添加【根据自己需求设置】

    // 是否启用路由
    'with_route'       => true,
    // 默认应用
    'default_app'      => 'api',
    // 默认时区
    'default_timezone' => 'Asia/Shanghai',

 4.2配置域名绑定

在config\app.php中进行配置域名绑定。这里需要注意的是,不要出现含有大写文字的域名,有可能会导致访问不到,通过域名来访问页面(不同域名访问不同的应用),默认域名直接匹配的就是index控制器的index方法

        // index应用地址
        $domainBind = Config::get('app.domain_bind');
        if ($domainBind) {
            $domainBindKey = array_search('index', $domainBind);
            $domainBindKey = $domainBindKey == '*' ? 'www.' : ($domainBindKey ? $domainBindKey . '.' : '');
            $indexUrl      = Request::scheme() . '://' . $domainBindKey . Request::rootDomain() . '/';
        }
        View::assign(['indexUrl' => $indexUrl ?? '/']);

有人可能又有疑问了,现在都是用的二级域名比较多,

www.xxxxx.com/admin能不能简化为admin.xxxx.com

www.xxxxx.com/api能不能简化为api.xxxx.com

答案毋庸置疑,肯定是能的,这个时候就用到了域名绑定,可以是二级域名前缀,也可以是全域名。app_map这个没用,这个是应用的映射,跟这个二级域名没有关系。

4.3配置环境变量

在项目文件夹下有一个“.example.env”环境变量示例文件,这个文件是示例文件,不是正式使用的文件,所以如果需要修改环境变量的话,可以复制“.example.env”,命名为".evn"文件,修改里面配置 主要这几项

配置网站域名 并同步hosts

配置到项目public目录下

配置小皮,不同域名访问不同的应用

配置到项目public目录下

注意:保存public/.htaccess文件中的重写规则,小皮面板设置网站后容易给置空

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2244283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机航测技术算法概述!

一、核心技术 传感器技术: GPS/GLONASS:无人机通过卫星定位系统实现高精度的飞行控制和数据采集。 高清相机:用于拍摄地面图像,通过后续图像处理生成三维模型。 激光雷达(LiDAR):通过激光扫…

Linux网络——套接字编程

目录 1. 网络通信基本脉络 2. 端口号 ① 什么是套接字编程? ② 端口号 port && 进程 PID 3. 网络字节序 4. 套接字编程 ① UDP版 ② TCP版 5. 改进方案与拓展 ①多进程版 ②多线程版 ③线程池版 ④守护进程化 1. 简单的重联 2. session &…

Excel如何把两列数据合并成一列,4种方法

Excel如何把两列数据合并成一列,4种方法 参考链接:https://baijiahao.baidu.com/s?id=1786337572531105925&wfr=spider&for=pc 在Excel中,有时候需要把两列或者多列数据合并到一列中,下面介绍4种常见方法,并且提示一些使用注意事项,总有一种方法符合你的要求:…

LabVIEW三针自动校准系统

基于LabVIEW的智能三针自动校准系统采用非接触式激光测径仪对标准三针进行精确测量。系统通过LabVIEW软件平台与硬件设备的协同工作,实现了数据自动采集、处理及报告生成,大幅提高了校准精度与效率,并有效降低了人为操作误差。 一、项目背景…

【Java】JDK集合类源码设计相关笔记

文章目录 前言1. Iterable2. RandomAccess2.1 RandomAccess 使用索引进行二分查找 3. Map3.1 HashMap3.2 IdentityHashMap 4. Collections 工具类4.1 Collections.shuffle() 洗牌 前言 目的: 收集JDK集合类的类图。记录一些有意思的设计。将之前写过的文章建立联系。 1. Ite…

macbook外接2k/1080p显示器调试经验

准备工具 电脑 满足电脑和显示器要求的hdmi线或者转接头或者扩展坞 betterdisplay软件 Dell P2419H的最佳显示信息如下 飞利浦 245Es 2K的最佳显示比例如下 首选1152

Stable Diffusion的解读(二)

Stable Diffusion的解读(二) 文章目录 Stable Diffusion的解读(二)摘要Abstract一、机器学习部分1. 算法梳理1.1 LDM采样算法1.2 U-Net结构组成 2. Stable Diffusion 官方 GitHub 仓库2.1 安装2.2 主函数2.3 DDIM采样器2.4 Unet 3…

Github 2024-11-16Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Go项目1Python项目1Lapce:用 Rust 编写的极快且强大的代码编辑器 创建周期:2181 天开发语言:Rust协议类型:Apache License 2.0St…

Redis作为分布式锁,得会避坑

日常开发中,经常会碰到秒杀抢购等业务场景。为了避免并发请求造成的库存超卖等问题,我们一般会用到Redis分布式锁。但是使用Redis分布式锁之前要知道有哪些坑是需要我们避过去的。 1. 非原子操作(setnx expire) 一说到实现Redis…

Qt、C++实现五子棋人机对战与本地双人对战(高难度AI,极少代码)

介绍 本项目基于 Qt C 实现了一个完整的五子棋游戏,支持 人机对战 和 人人对战 模式,并提供了三种难度选择(简单、中等、困难)。界面美观,逻辑清晰,是一个综合性很强的 Qt 小项目 标题项目核心功能 棋盘…

Vulnhub靶场案例渗透[12]-Grotesque: 1.0.1

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 目录扫描4. 敏感信息获取5. 反弹shell6. 权限提升 一、靶场搭建 1. 靶场描述 get flags difficulty: medium about vm: tested and exported from vi…

git日志查询和导出

背景 查看git的提交记录并下载 操作 1、找到你idea代码的路径,然后 git bash here打开窗口 2、下载所有的日志记录 git log > commit.log3、下载特定日期范围内记录 git log --since"2024-09-01" --until"2024-11-18" 你的分支 > c…

LeetCode Hot100 15.三数之和

题干: 思路: 首先想到的是哈希表,类似于两数之和的想法,共两层循环,将遍历到的第一个元素和第二个元素存入哈希表中,然后按条件找第三个元素,但是这道题有去重的要求,哈希表实现较为…

Vue3、Vite5、Primevue、Oxlint、Husky9 简单快速搭建最新的Web项目模板

Vue3、Vite5、Oxlint、Husky9 简单搭建最新的Web项目模板 特色进入正题创建基础模板配置API自动化导入配置组件自动化导入配置UnoCss接入Primevue接入VueRouter4配置项目全局环境变量 封装Axios接入Pinia状态管理接入Prerttier OXLint ESLint接入 husky lint-staged&#xf…

基于深度学习的文本信息提取方法研究(pytorch python textcnn框架)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Linux(命令格式详细+字符集 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频 王晓春老师的个人空间…

机器学习中的概率超能力:如何用朴素贝叶斯算法结合标注数据做出精准预测

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

01 —— Webpack打包流程及一个例子

静态模块打包工具 静态模块:html、css、js、图片等固定内容的文件 打包:把静态模块内容,压缩、转译等 Webpack打包流程 src中新建一个index.js模块文件;然后将check.js模块内的两个函数导入过来,进行使用下载webpack…

时间类的实现

在现实生活中,我们常常需要计算某一天的前/后xx天是哪一天,算起来十分麻烦,为此我们不妨写一个程序,来减少我们的思考时间。 1.基本实现过程 为了实现时间类,我们需要将代码写在3个文件中,以增强可读性&a…

学习笔记024——Ubuntu 安装 Redis遇到相关问题

目录 1、更新APT存储库缓存: 2、apt安装Redis: 3、如何查看检查 Redis版本: 4、配置文件相关设置: 5、重启服务,配置生效: 6、查看服务状态: 1、更新APT存储库缓存: sudo apt…