TP框架中APP_SUB_DOMAIN_DEPLOY什么意思?
'APP_SUB_DOMAIN_DEPLOY' => false, // 是否开启子域名部署
thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署
ThinkPHP支持模块(甚至可以包含控制器)的完整域名、子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用。
无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SUB_DOMAIN_DEPLOY,这是前提,然后配置域名部署规则APP_SUB_DOMAIN_RULES。
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名或者IP配置
'APP_SUB_DOMAIN_RULES' => array(
/* 域名部署配置
*格式1: '子域名或泛域名或IP'=> '模块名[/控制器名]';
*格式2: '子域名或泛域名或IP'=> array('模块名[/控制器名]','var1=a&var2=b&var3=*');
*/
)
和1的区别在于格式2可以隐式传入额外的参数。 域名和IP的解析涉及到DNS解析以及Apache等服务器的配置,这块不再详细描述,请参考相关百度资料。
域名或者IP部署到模块并不需要设置模块访问列表。
完整域名部署
可以在域名规则中直接定义完整的域名,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin.domain1.com' => 'Admin', // admin.domain1.com域名指向Admin模块
'test.domain2.com' => 'Test', // test.domain2.com域名指向Test模块
),
在域名部署之前的访问地址: http://www.domain.com/Admin/Index/index 和 http://www.domain.com/Test/Index/index
域名部署后的访问地址变成: http://admin.domain1.com/Index/index 和 http://test.domain2.com/Index/index
子域名部署
子域名部署包括任意级子域名的支持,在你的应用配置文件中增加如下配置参数:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin', // admin子域名指向Admin模块
'test' => 'Test', // test子域名指向Test模块
),
部署之前的访问地址:http://www.domain.com/Admin/Index/index
部署后的访问地址变成: http://admin.domain.com/Index/index
如果你的部署域名后缀是二级后缀,例如 com.cn 、net.cn 或者 org.cn 之类的话,为了让系统更好的识别你的子域名,需要配置APP_DOMAIN_SUFFIX如下:
'APP_DOMAIN_SUFFIX'=>'com.cn'
APP_DOMAIN_SUFFIX参数不支持设置多个后缀,如果你是一级域名后缀的话则该参数可以无需任何设置。
传入参数
子域名部署的时候,可以传入隐式的参数,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => array('Admin','var1=1&var2=2'), // admin子域名指向Admin模块
),
访问 http://admin.domain.com/Index/index 的同时会传入 $_GET['var1'] = 1 和 $_GET['var2'] = 2 两个参数。
控制器绑定
子域名部署还可以支持绑定某个控制器,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'test.admin' => 'Admin/Test', // test.admin子域名指向Admin模块的Test控制器
),
部署之前的访问地址: http://www.domain.com/Admin/Test/index
部署后的访问地址: http://test.admin.domain.com/index
泛域名部署
如果要部署某个模块到泛域名支持,可以使用:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin', // admin域名指向Admin模块
'*' => array('Test','var1=1&var2=*'), // 二级泛域名指向Test模块
'*.user' => array('User','status=1&name=*'), // 三级泛域名指向User模块
),
配置后,我们可以访问:
http://hello.domain.com/Index/index
访问Test模块 并隐式传入$_GET['var1'] = 1 和 $_GET['var2'] = 'hello' 两个参数。
访问如下地址:
http://think.user.domain.com/Index/index
访问User模块,并隐式传入 $_GET['status'] = 1 和 $_GET['name'] = 'think' 两个参数。
在配置传入参数的时候,如果需要使用当前的泛域名作为参数,可以直接设置为"*"即可。
目前只支持二级域名和三级域名的泛域名部署。
IP访问部署
可以为某些模块配置IP访问规则,例如:
'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'22.56.78.9' => 'Admin', // 22.56.78.9指向Admin模块
),
转
文章来源:刘俊涛的博客
欢迎关注,有问题一起学习欢迎留言、评论
TP框架中APP_SUB_DOMAIN_DEPLOY什么意思?的更多相关文章
- TP框架中关于if、else 分支结构逻辑错误
TP框架中关于if.else 分支结构逻辑错误 代码中没有任何错误 将注释往下一行就可以解决 造成问题的原因: TP框架中 想分配变量可以使用assign方法 在[模块]中: $this->as ...
- TP框架中如何使用SESSION限制登录?
TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Cont ...
- TP框架中ajax post请求时提示404
ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了!
- TP框架中field查询字段
TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...
- TP框架中模板赋值
TP框架中模板赋值 $this->assign('name',$value); $this->name = $value; // 两种写法是等效的
- TP框架中模糊查询实现
TP框架中模糊查询实现 $where['g.name'] = array('like','%'.$groupname.'%'); 表达式查询 上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式 ...
- tp框架中的一些疑点知识-7
mysqli是用面向对象的,所以用箭头对象语法, 而mysql是用C语言面向过程写的, 所以用的都是php全局函数 式的写法. tinkle: 叮叮当当的响; (口语)一次电话, i will giv ...
- tp框架中的一些疑点知识-5
关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...
- tp框架中的一些疑点知识-2
tp中有三种常量: 预定义常量, 这个设置后不会随环境的改变而改变的,比如'URL_MODEL' => 1 注意是 model, 不是 url_mode 路径常量, 也不会随环境的改变而改变的, ...
随机推荐
- PUSH MESSAGE 云控等交互类测试业务的自动化
针对的业务: 1. PUSH消息,即由云端服务向客户端推送消息 2. MESSAG消息,即用户间消息.用户群消息和聊天室消息 上干货,框架见下图:
- 不错的SDL源码分析
SDL源码分析 1:初始化(SDL_Init()) 2:窗口(SDL_Window) 3:渲染器(SDL_Renderer) 4:纹理(SDL_Texture) 5:更新纹理(SDL_UpdateT ...
- How to edit the init.rc in android
We have to perform the following steps to edit your init.rc successfully: . Download the BOOT (R ...
- MapReduce实现排序功能
期间遇到了无法转value的值为int型,我採用try catch解决 str2 2 str1 1 str3 3 str1 4 str4 7 str2 5 str3 9 用的\t隔开,得到结果 str ...
- POJ 3740 Dancing Links
Dancing Links学习:http://www.cnblogs.com/steady/archive/2011/03/15/1984791.html 以及图文学习:http://www.cnbl ...
- servlet 3.0特性说明
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发 ...
- MAC之查看日历
命令:cal 查看当前月份 命令: cal 04 2001 查看2001年的4月份 echo命令: 打印信息
- 收藏的iOS技术站点汇总(持续更新ing)
大牛博客 objc.io PS:经典,内容深而广 objc中国 NSHipster PS:非常多小细节 NSHipster 中文版 唐巧的技术博客 PS:LZ是唐巧的脑残粉- OneV's Den 王 ...
- Java开发牛人十大必备网站
以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质量是衡量一个网站的关键因素,我个人认为这些网站质量都很好.接下来,我会跟大家分享我 ...
- convert-a-number-to-hexadecimal
https://leetcode.com/problems/convert-a-number-to-hexadecimal/ // https://discuss.leetcode.com/topic ...