'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什么意思?的更多相关文章

  1. TP框架中关于if、else 分支结构逻辑错误

    TP框架中关于if.else 分支结构逻辑错误 代码中没有任何错误 将注释往下一行就可以解决 造成问题的原因: TP框架中 想分配变量可以使用assign方法 在[模块]中: $this->as ...

  2. TP框架中如何使用SESSION限制登录?

    TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Cont ...

  3. TP框架中ajax post请求时提示404

    ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了!

  4. TP框架中field查询字段

    TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...

  5. TP框架中模板赋值

    TP框架中模板赋值 $this->assign('name',$value); $this->name = $value; // 两种写法是等效的

  6. TP框架中模糊查询实现

    TP框架中模糊查询实现 $where['g.name'] = array('like','%'.$groupname.'%'); 表达式查询 上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式 ...

  7. tp框架中的一些疑点知识-7

    mysqli是用面向对象的,所以用箭头对象语法, 而mysql是用C语言面向过程写的, 所以用的都是php全局函数 式的写法. tinkle: 叮叮当当的响; (口语)一次电话, i will giv ...

  8. tp框架中的一些疑点知识-5

    关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...

  9. tp框架中的一些疑点知识-2

    tp中有三种常量: 预定义常量, 这个设置后不会随环境的改变而改变的,比如'URL_MODEL' => 1 注意是 model, 不是 url_mode 路径常量, 也不会随环境的改变而改变的, ...

随机推荐

  1. Spring_Task初探(注解,XML配置)

    这几天想写一个动态添加任务项目找了找Spring下的自带定时功能发现还真有,然后网上找了找资料写了个demo 写了两种方式来执行定时的任务(XML配置和注解) 先建两个普通的任务类(XML配置调用的任 ...

  2. linux下如何挂接(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享

    首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的.      命令格式:      mount [-t vfstype] [-o options ...

  3. 设置SVN忽略文件和目录(文件夹)

    在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交 ...

  4. 访问自身子画面的方法 [self.view viewWithTag:100];

    UIImageView *view1 = (UIImageView*)[self.view  viewWithTag:100];

  5. C#编程(十一)----------C#编程规范

    C#编程规范 1.要使一个代码块内的代码都同意缩进一个tab键长度 2.有下列情况下建议有换行 方法之间: 局部变量和它后边的语句之间: 方法内的功能逻辑部分之间: 3.{和}要单起一行 4.每行建议 ...

  6. android应用名称设置的问题

    <application             android:label="@string/app_name1" <activity             and ...

  7. Arcgis Runtime for andriod 100 加载geodatabase

    private void LoadMY(){ try { String mainGeodatabaseFilePath = YLPub.getMapData() + "/gismap/sl. ...

  8. 【linux】linux查看文件大小,磁盘大小

    查看指定目录下 文件或目录大小超过多少的 查看 /backup/tomcat7/ 目录下 超过500M大小的文件 并展示 文件详情 find /backup/tomcat7/  -type f -si ...

  9. 【微信小程序】在微信开发工具上七牛云的图片可以看到,但是在真机上看不到的原因解决

    在开发微信小程序过程中,在微信开发者工具上,七牛云的图片都可以展示出来,但是在真机上,七牛云的图片却展示不出来,也没有报404找不到或者不能加载图片的问题, 必须保证: 1.图片是用image加载的: ...

  10. 各种语言的注释总结--from wiki

    Comments can be classified by: style (inline/block) parse rules (ignored/interpolated/stored in memo ...