找回密码
 立即注册
搜索
查看: 45|回复: 3

[thinkphp] 关于thinkphp5.0模块绑定另外域名的事情

[复制链接]
发表于 2025-1-9 10:46 | 显示全部楼层 |阅读模式
背景:在原来的tp5.0网站上加了一个模块,名为blog,域名为blog.bbb.com,原主站域名为aaa.com
期望:访问aaa.com为原来的网站,不受新域名模块的影响。访问blog.bbb.com为新的域名,两个站点内容互不影响,各展示各的内容。

过程
关于thinkphp5.0.27模块绑定域名的事情:参考了下面网站,
https://blog.csdn.net/qq_39835505/article/details/119911016
https://www.cnblogs.com/litchimax/p/11585538.html

依旧没有解决,而且还要改一些php代码……实在无奈,只能去手册上找了。

1、'app_multi_module'  =>  true

2、'url_domain_deploy' =>  true

3、return [
    '__domain__'=>[
        'blog' => [
            // 动态注册域名的路由规则
            '/' => ['blog/index/index', ['method'=>'GET', 'cache'=>3600] ],
            ':id' => ['blog/read',['method'=>'GET'],['id'=>'\d+']],
            ':name'=>'blog/read',
        ],
    ],
    // 下面是其它的路由规则定义
   '/' => ['index/index/index',  ['method'=>'GET', 'cache'=>3600] ],
];

抱着试一试的态度,成功了。就这三步,不用改其它php代码。我用的thinkphp5.0.27版本,最后一个版本吧。不晓得上面两位博主是如何成功的。

注:thinkphp官方已经不再维护thinkphp5.0版本了,也不会对5.0版本的漏洞打补丁。可以找fastadmin同步,这个团队还在维护5.0版本
 

不足之处
要特别注意标红的参数   'cache'=>3600 ,这个表示请求缓存(我觉得应该叫路由缓存,毕竟在路由规则中)。如果各个域名的路由都加上此参数进行缓存,就会出现首页混乱的情况。此时,会有一个类似/的key被缓存,所有首页都走这个路由缓存。因此,不要进行多个域名首页路由缓存。而且路由一样的情况下,不要进行路由缓存,或者只有一个域名进行路由缓存。不知道为啥blog模块下的config.php里配置新的redis不生效(已经测试过 config('cache.prefix', 'xx:blog:') ; 并且此值已经生效,但只会有一个路由首面),终于在这里找到了答案:

通过路由绑定机制,我们可以灵活自定义项目的目录结构来满足实际需求。

最后,我们再来总结下多应用和多模块的主要区别:

  • 多应用的目录、路由、配置都是完全独立(比较适用于彼此独立的应用);
  • 多模块只是控制器分级,路由、配置则统一定义(比较适用于一个应用下的多个关联模块);
  • 多应用支持应用中间件,多模块支持模块中间件;
  • 多应用不支持think-swoole/think-worker,多模块则可以良好支持;
  • 多应用和多模块可以同时使用,并不冲突;

源址:https://doc.thinkphp.cn/@wiki/custom-directory-with-route.html

研究到此为止!

有小伙伴问:你直接在程序中用redis缓存整个结果不一样吗?答曰:不一样。路由缓存的速度更快一些。

点评

好不容易想起来使用中间件去处理这个问题,才发现tp5.0不支持中间件^_^  发表于 2025-1-16 11:39
 楼主| 发表于 2025-1-16 11:38 | 显示全部楼层

贴一则别人的域名绑定模块:

 

(一)下载 thinkphp5.0.24

composer create-project topthink/think=5.0.* tp5  --prefer-dist
登录后复制

(二)开启域名部署

打开application / config.php

// 域名部署
'url_domain_deploy'      => true,

(三)配置域名绑定模块

打开application / route.php

//  域名绑定到模块
 '__domain__'  => [
      'ad.footable.com' => 'admin', //后台
      'www.footable.com'   => 'index', //前台
      'api.footable.com'   => 'api' //api
 ],
源址:http://php7.com.cn/?id=10927
 楼主| 发表于 2025-1-16 11:40 | 显示全部楼层
thinkphp5.1及更高中间件学习地址:
https://www.zzsucai.com/biancheng/4365.html
https://blog.csdn.net/json_ligege/article/details/128536760
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2025-2-5 14:59 , Processed in 0.023072 second(s), 15 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表