ThinkPhp子域名绑定控制器中方法

Thinkphp dispatch派遣类分离出模块和操作 <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- 阅读详情

ThinkPhp3.2版本中可以将子域名和模块、控制器绑定,但不可以和控制器中方法绑定,现在我有个需求要求子域名直接和控制器中方法绑定,比如访问www.youkuaiyun.com直接访问Home模块/Main控制器/main方法,而访问blog.youkuaiyun.com直接访问Home模块/Main控制器/user方法,就像csdn个人主页地址blog.youkuaiyun.com/joyfixing,后面的joyfixing是user方法的传参。

首先来实现访问www.youkuaiyun.com直接访问Home模块/Main控制器/main方法,这个很简单,在配置文件中为模块/控制器/方法设置默认值即可。

'DEFAULT_MODULE'        =>  'Home',  // 默认模块
'DEFAULT_CONTROLLER'    =>  'Main', // 默认控制器名称
'DEFAULT_ACTION'        =>  'main', // 默认操作名称

如果想在访问Home模块/Main控制中其它方法时隐藏Home模块/Main控制器,首先隐藏Home模块。

'MODULE_ALLOW_LIST'     =>  array('Home','Admin'),
'DEFAULT_MODULE'        =>  'Home',  // 默认模块

接着要绑定Main控制器,在入口文件中绑定。

// 绑定访问Mian控制器,默认控制器为Main,实现了控制器Main的隐藏
define('BIND_CONTROLLER','Main');

后续访问Home模块/Main控制器中的方法只要在www.youkuaiyun.com后面加方法就可以访问了。

接下来要实现的是本文重点,ThinkPhp子域名绑定控制器中方法,既然ThinkPhp没有提供该方法,我们可以在index.php入口文件中根据域名绑定不同的控制器和方法来实现。

if($_SERVER['HTTP_HOST'] == "blog.youkuaiyun.com"){
    // 根据需求可绑定控制器,
    // define('BIND_CONTROLLER','Blog');
    // 域名blog.huxinyi.cn默认访问方法user
    define('BIND_ACTION','user');
}else{
    // 默认控制器为Main,实现了控制器Main的隐藏
    define('BIND_CONTROLLER','Main');
}

此时访问blog.youkuaiyun.com就访问Home模块/Main控制器/user方法了。假设user方法有个参数username,根据不同的username显示不同用户的主页。如果username为joyfixing此时URL地址应该为blog.youkuaiyun.com/username/joyfixing,这多难看啊,要想办法把username给隐藏掉,URL地址应该为blog.youkuaiyun.com/joyfixing,此时需要用到Action参数绑定按变量顺序绑定,设置URL_PARAMS_BIND_TYPE为1,然后访问blog.youkuaiyun.com/joyfixing就相当于访问blog.youkuaiyun.com/username/joyfixing了。

温馨提示:
这里'DEFAULT_ACTION'=>'user',和define('BIND_ACTION','user');都可以实现隐藏user方法,不同点为define('BIND_ACTION','user');为永久隐藏方法user,此时想访问其它方法都不可以了,所以要慎重使用define('BIND_ACTION','user');

开启子域名虽然可以简化URL地址,但同时也带来了一些不便,开启子域名后blog.youkuaiyun.com和www.youkuaiyun.com之间session和cookie就不能共享了,可以设置cookie的domain为youkuaiyun.com实现共享,session则需要设置两套。

在blog.youkuaiyun.com/joyfixing中提交评论需要用到ajax post到Home模块/Main控制器/addComment方法,在js中post url不能直接写‘/addComment’,这样url就是blog.youkuaiyun.com/addComment,此时addComment就是user方法的username传参了(使用define('BIND_ACTION','user');的后果),url应该写成http://www.youkuaiyun.com/addComment,此时又引入了一个新的问题,ajax 跨越,浏览器的同源策略限制了ajax从域blog.youkuaiyun.com提交到www.youkuaiyun.com,此时需要使用jsonp来解决。如果不想用jsonp解决跨域的问题,那应该避免跨域的存在,把addComment方法和user方法放到同一个控制器中,且不能用define('BIND_ACTION','user');绑定方法使其它方法无法调用,我的建议是www.youkuaiyun.com对应模块Home,blog.youkuaiyun.com对应模块Blog,在Blog模块的配置文件中设置默认控制器和方法

'DEFAULT_CONTROLLER'    =>  'Blog', // 默认控制器名称
'DEFAULT_ACTION'        =>  'user', // 默认操作名称

这样当访问blog.youkuaiyun.com时默认访问Blog模块/Blog控制器/user方法了,也可以访问Blog控制器中其它方法了。此外还需要在入口文件index.php中根据域名绑定模块

if($_SERVER['HTTP_HOST'] == "blog.youkuaiyun.com"){
    // 绑定模块Blog
    define('BIND_MODULE','Blog');
}else{
    // 绑定模块Main
    define('BIND_MODULE','Main');
}
ThinkPHP6控制器加载失败排查指南:从命名空间到路由配置 在PHP现代框架开发中,PSR-4自动加载规范是类文件管理的核心机制,它通过命名空间与文件路径的映射关系实现类的自动发现与加载。其原理是基于Composer的autoloader,根据约定的目录结构将类名解析为物理文件路径。这一机制的技术价值在于提升了代码组织规范性,避免了传统require_once带来的维护负担,是实现模块化开发的基础。在实际应用场景中,开发者常因命名空间声明错误、文件大小写不一致或多应用模式下的路径映射偏差,触发“控制器不存在”等类加载异常。本文聚焦ThinkPHP6框架,针对“控制器 阅读详情

相关推荐

ThinkPHP6控制器不存在错误:多应用模式与路由配置深度解析

在Web开发框架中,路由机制负责将用户请求的URL映射到对应的控制器类和方法,这是MVC架构的核心环节。其工作原理通常基于URL解析、命名空间映射和自动加载机制,确保请求能够准确找到并实例化目标控制器。这一机制的技术价值在于实现了请求与业务逻辑的解耦,提升了代码的可维护性和可扩展性。在实际应用场景中,尤其是在采用多应用架构或模块化设计时,路由与控制器映射的配置尤为关键。本文聚焦于ThinkPHP6框架,针对开发者高频遇到的“控制器不存在”报错,深入剖析其根源。该问题常与多应用模式开关、路由定义覆盖以及控制器

weixin_34195142的博客 413

thinkphp 框架 前后端用不同域名绑定

域名绑定到模块

qq_16746785的博客 800

ThinkPHP6控制器不存在报错排查指南:从文件检查到路由配置

在PHP框架开发中,控制器是MVC架构的核心组件,负责处理用户请求并协调模型与视图。其工作原理基于路由解析和自动加载机制,将URL映射到对应的类和方法。这一机制的技术价值在于实现了请求的分离与模块化,提升了代码的可维护性。常见的应用场景包括Web应用开发、API接口构建等。当控制器无法加载时,往往涉及文件路径、命名空间或路由配置问题。本文聚焦ThinkPHP6框架中“控制器不存在”的典型报错,结合多应用配置和路由规则等热词,提供从基础文件检查到深层框架机制的完整排查链路,帮助开发者快速定位并解决单应用与多应

weixin_34068198的博客 680

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

1 安装多应用插件:composer require topthink/think-multi-app。3 修改config/app.php中的 'auto_multi_app' => true。thinkphp6和tp6配置多应用项目多域名访问路由app配置。2 创建应用项目:php think build 应用项目名。备注:当然还是建议使用域名绑定后台admin项目应用。0 删除原有的controller目录。

webnoties的专栏 4139

ThinkPHP域名绑定不同模块实现方法

在ThinkPHP中,我们可以通过配置域名来实现不同模块的绑定,从而实现多个模块在同一个项目中的独立访问。这里配置了两个路由规则,将www.module1.com映射到Module1模块的Index控制器的index方法,将www.module2.com映射到Module2模块的Index控制器的index方法。这样,不同的域名访问时将会访问同一个项目,但可以通过配置来指定不同的模块。接下来,我们需要在ThinkPHP项目中进行模块路由的配置,以便根据不同的域名来访问不同的模块。希望本文对你有所帮助!

MquaDevops的博客 717

告别Keil?在Mac上配置STM32CubeIDE + CMSIS-DAP调试器全攻略(含常见报错解决)

本文详细介绍了在Mac平台上配置STM32CubeIDE与CMSIS-DAP调试器的全流程,包括硬件准备、软件安装、工程创建及调试优化。通过实战指南,帮助开发者高效完成STM32开发,解决常见报错问题,提升开发效率。

weixin_30485379的博客 433

TP8/6 子域名绑定应用

原www.xxx.com/admin改为admincms.xxx.com。

php菜鸟技术天地 675

MATLAB编程实战:通过SCPI命令高效读取普源示波器数据

本文详细介绍了如何利用MATLAB通过SCPI命令高效读取普源示波器数据,实现自动化测试与数据分析。文章从硬件连接到软件配置,再到核心代码编写与数据解析,提供了完整的实战指南,帮助工程师和科研人员摆脱手动操作,直接从示波器内存中精准读取数据,并利用MATLAB进行FFT频谱分析,大幅提升工作效率。

weixin_29176179的博客 547

php域名绑定模块,ThinkPHP5.1 域名绑定模块

ThinkPHP5.1 域名绑定模块,域名,路由,绑定,在线留言,手机ThinkPHP5.1 域名绑定模块易采站长站,站长之家为您整理了ThinkPHP5.1 域名绑定模块的相关内容。如果你的网站需要在一个后台里面加两个网站的资料,那么你的 前台就会有四个模块,主域名,主域名手机端,次域名,次域名手机端,需要把主域名和次域名的模块分别绑定到不同的域名上,并且主域名和次域名的路由完全一致的情况下,你...

weixin_34779181的博客 386

INS/伪距组合导航(2)

伪距惯导组合导航

u014430081的博客 829

流量特征工程实战:基于Python脚本的CIC-FlowMeter批量自动化处理

本文详细介绍了如何利用Python脚本对CIC-FlowMeter工具进行批量自动化封装,实现从海量PCAP文件中高效提取流量特征并生成CSV文件。通过构建健壮的自动化流水线,解决了手动处理效率低下、易出错的问题,并分享了并行处理、错误处理等关键优化技巧,助力网络流量分析与机器学习数据预处理工作。

c6d7e8f9g的博客 744

ThinkPHP6.0多应用模式路由

在TP6中如果采用了多应用模式,每个应用的路由定义和匹配都是独立的 应用路由都在 app/应用/route 目录下定义,应用路由定义文件示例如下: app/index/route/web.php app/index/route/api.php app/admin/route/web.php 特别注意:好好体会这句话 应用的路由规则其实是定义的入口文件(或者应用名)后面的URL部分,而不包含应用。 控制器方法默认访问方式(pathinfo):/应用/控制器/方法 应用路由定义的只是应用后面的部分:.

辰风沐阳 7119

本地部署Llama 3中文版:Ollama量化配置与调优指南

大模型本地部署正在成为数据敏感场景下的主流选择。本地运行开源大模型,既能保护隐私又能降低调用成本,但中文能力往往成为瓶颈。以Llama 3为代表的开源模型,需借助中文微调与量化技术,才能在消费级显卡上流畅运行。量化通过压缩模型权重减小显存占用,配合Ollama等推理框架,可快速搭建私有中文AI服务。该方案适用于知识库问答、内容生成、离线助手等场景,并可通过OpenAI兼容接口无缝对接Dify等应用平台。本文从硬件选型、量化等级到Modelfile配置,系统梳理本地部署中文大模型的全链路实战方法与排错思路,帮

weixin_29035405的博客 83

thinkphp自动跳到首页 --开启域名部署/子域名部署/泛域名部署/IP访问部署

thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署         ThinkPHP支持模块(甚至可以包含控制器)的完整域名、子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用。                  无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SU

历史的旋律 的博客 2582

YOLO11全网首发优化:卷积魔改创新 | AAAI 2025 | 一种新颖的风车形卷积(PConv)符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野

我们提出了一种新颖的风车形卷积(PConv)作为骨干网络下层标准卷积的替代品。PConv能更好地符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野,且只引入最小的参数增加。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1973

PCL 计算点云AABB包围盒的体积【2026最新版】

AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即可!博客长期更新,本文最近一次更新时间为:2026年5月3日。

点云侠的博客 2295

thinkphp5 域名路由

本片博客的内容和thinkphp5.0完全开发手册中的差不多一样,所以内容我照搬,不过这里主要侧重如何配置实现。 ThinkPHP支持完整域名、子域名和IP部署的路由和绑定功能,同时还可以起到简化URL的作用。 要启用域名部署路由功能,首先需要开启 ‘url_domain_deploy’ => true 定义域名部署规则支持两种方式:动态注册和配置定义。 动态注册 可以在应用的公共文...

qq_42683219的博客 2108

【人工智能】大模型可以分为L0层:基础大模型/通用大模型、L1层:行业大模型、L2层:细分场景模型三个层级

大模型确实可以分为L0、L1、L2三个层级,这种分层架构不仅有助于提升模型的泛化能力和适应性,还能更好地满足不同行业和场景的需求。华为盘古大模型的分层架构(L0、L1、L2)在多个证据中得到了详细描述和验证。例如,华为云盘古大模型3.0明确分为L0基础大模型、L1行业大模型和L2场景模型三层架构。此外,其他来源也一致支持这一分层架构,如用友网络的企业服务大模型、智谱AI的GLM-4系列等。

奶爸的编程之路,也就一周冷个三天 3984

ThinkPHP6.0 多应用模式版本路由

记录一次ThinkPHP6.0的路由坑。下面是多应用模式版本路由解决方法。(开启多应用的方式参考官方手册,这里不赘述) 当前版本为thinkphp6.0 RC4 Apache的配置文件需要配置,当前我用的phpstudy 2018,PHP7.1 在phpstudy的Apache下,需要修改项目根目录下的/public/.htaccess 具体配置如下 <IfModule mo...

九城科技 博客:https://blog.minkse.cn/ 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Thinkphp 部署/域名部署

域名部署 ThinkPHP支持模块(甚至可以包含控制器)的完整域名、子域名和IP部署功能 开启域名部署 无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SUB_DOMAIN_DEPLOY,这是前提,然后配置域名部署规则APP_SUB_DOMAIN_RULES。 'APP_SUB_DOMAIN_DEPLOY' =&gt; 1, // 开启子域名或者IP配置 'APP_...

张默的博客 1870

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署

thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署 thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署 ThinkPHP支持模块(甚至可以包含控制器)的完整域名、子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用。 无论是子域名还是IP部署,首...

叶落无痕的博客 559

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

thinkphp5路由控制器请求略解

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考##2.1注册路由规则路由注册可以采用方法动态单个和批量注册,也可以直接定义路由定义文件的方式进行集中注册。

weixin_63125358的博客 822

cmf+ThinkPHP6.0 配置使用多应用路由

cmf+ThinkPHP6.0 配置使用多应用路由 使用说明 多应用模式版本路由,并且以子域名的方式绑定应用 当前版本为thinkphp6.0.7 开启多应用模式需要使用到一个拓展 composer require topthink/think-multi-app 配置目录 在app下新建了"模块1"、"模块2"两个应用(它们是同级目录) 其中"模块1"目录下创建controller、model、config、route目录("模块2"也同样需要一样的子目录) 各模块下在controller中可创建一个名为

qq_24252705的博客 910

php 实现域名路由器,域名路由 · ThinkPHP5.0完全开发手册 · 看云

ThinkPHP支持完整域名、子域名和IP部署的路由和绑定功能,同时还可以起到简化URL的作用。要启用域名部署路由功能,首先需要开启:~~~'url_domain_deploy' => true~~~定义域名部署规则支持两种方式:动态注册和配置定义。## 动态注册可以在应用的公共文件或者配置文件中动态注册域名部署规则,例如:~~~// blog子域名绑定到blog模块Route::doma...

weixin_34039159的博客 510

ThinkPHP中泛域名部署的实现方法

而使用泛域名部署,则只需要将所有子域名指向同一个文件夹即可,每个子域名内的网站应用程序可以共享同一套代码和数据。对于需要部署多个网站的开发者来说,站群架构是一种广泛采用的设计模式,而泛域名部署则是站群架构中比较常见的实现方式之一,在这篇文章中,我们将介绍如何在ThinkPHP框架中实现泛域名部署站群,需要的朋友可以参考下。无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SUB_DOMAIN_DEPLOY,这是前提,然后配置域名部署规则APP_SUB_DOMAIN_RULES。

Oona_01的博客 298
上一篇: cookie安全加密
下一篇: CSS float
joyfixing
博客等级 码龄17年 115粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值