Martix 发表于 2016-11-7 10:57:45

设置2级域名咯

本帖最后由 Martix 于 2016-11-7 15:57 编辑

好久没来了,论坛突然换了界面 就是不一样哈,高大上了许多.
在网上看到的帖子 自己也没实验 搬过来存个档吧
转发:http://blog.hs5233.com/blog/codeigniter_group.htmlcodeigniter 3.1设置子域名解析首先在application\config目录下增加一个domain.php文件,然后写入:
/*domain:允许访问的子域名
default_domain:www前缀默认进入的分组   
*/   
//默认分组   
$default_domain = array('blog');   
//全部分组   
$domain = array('blog','test','wechat');
查看system\core\CodeIgniter.php:/* * ---------------- *Instantiate the routing class and set the routing * ----------------- */   
$RTR =& load_class('Router', 'core', isset($routing) ? $routing : NULL);
可知codeigniter控制路由的程序是同目录下的Router.php;打开Router.php,添加一个成员属性和一个成员方法,比如:    /**   * 访问的域名前缀   *                * @var string   
   */   
public $domain;   
// --------------------------------------------------------------------   
/**   * 设置domain   *   
      * @returnvoid   
*/   
protected function set_domain()    {      
$reqDomian = explode('.',$_SERVER['SERVER_NAME']);      
require_once(APPPATH.'config/domain.php');      
$this->domain = $reqDomian == 'www' ? $default_domain : $reqDomian;      
if(!in_array($this->domain,$domain)){            
show_404($RTR->directory.$class.'/'.$method);      
}   
}

然后把此文件内所有遍历controllers的路径都增加$this->domain.'/',例如:if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php'))
改为
if ( ! file_exists(APPPATH.'controllers/'.$this->domain.'/'.$this->directory.ucfirst($class).'.php'))

返回system\core\CodeIgniter.php,把此文件内所有遍历controllers的路径都增加$RTR->domain.'/',例如:APPPATH.'controllers/'.$RTR->directory.$error_class.'.php'
改为
APPPATH.'controllers/'.$RTR->domain.'/'.$RTR->directory.$error_class.'.php'

OK,代码部分修改完毕。具体使用方式:在application\controllers目录下建立分组,比如分index和admin;
application\config\domain.php文件里面的default_domain设置www前缀访问的分组,domain设置全部分组。
//默认分组$default_domain = array('blog'); //全部分组 $domain = array('blog','test','wechat');教程完毕,点击下载源码。
bug:当不带域名前缀访问的时候会显示404页面;解决方案:修改set_domain方法:protected function set_domain()    {
      $reqDomian = explode('.',$_SERVER['SERVER_NAME']);
      if(count($reqDomian)<3)$reqDomian = 'www';
      require_once(APPPATH.'config/domain.php');
      $this->domain = $reqDomian == 'www' ? $default_domain : $reqDomian;
      if(!in_array($this->domain,$domain)){            
            show_404($RTR->directory.$class.'/'.$method);      
         }   
}



Hex 发表于 2016-11-7 13:52:47

赞!如果能改改代码高亮就好了!哈哈

Martix 发表于 2016-11-7 16:00:07

Hex 发表于 2016-11-7 13:52
赞!如果能改改代码高亮就好了!哈哈

猪大,代码已高亮.确实好看了不少.

Hex 发表于 2016-11-7 16:18:42

Martix 发表于 2016-11-7 16:00
猪大,代码已高亮.确实好看了不少.

棒棒哒!

soho22 发表于 2016-11-7 16:19:56

Hex 发表于 2016-11-7 13:52
赞!如果能改改代码高亮就好了!哈哈

论坛刚换界面的那几天没适应,我还以为是我网速卡得样式都加载不来了。。。

Hex 发表于 2016-11-7 16:20:57

soho22 发表于 2016-11-7 16:19
论坛刚换界面的那几天没适应,我还以为是我网速卡得样式都加载不来了。。。 ...

哈哈,论坛样式应该还会再调整,现在的样式我还是不太满意,有点太白了,晃眼。

Martix 发表于 2016-11-8 11:37:06

Hex 发表于 2016-11-7 16:20
哈哈,论坛样式应该还会再调整,现在的样式我还是不太满意,有点太白了,晃眼。 ...

可以设置成 自定义的 个人觉得 自定义更爽 上传图片做背景 更完美了.

Hex 发表于 2016-11-8 14:01:13

Martix 发表于 2016-11-8 11:37
可以设置成 自定义的 个人觉得 自定义更爽 上传图片做背景 更完美了.

哈哈,这恐怕就超出 Discuz! 的能力了。。。。

Martix 发表于 2016-11-10 12:22:38

Hex 发表于 2016-11-8 14:01
哈哈,这恐怕就超出 Discuz! 的能力了。。。。

猪大 你抽个时间自己改改 不就好了吗 换个背景 不是太难吧.:P

Hex 发表于 2016-11-10 14:09:08

Martix 发表于 2016-11-10 12:22
猪大 你抽个时间自己改改 不就好了吗 换个背景 不是太难吧.

改 discuz 不好改。。。。。先好好改改论坛样式吧~
页: [1]
查看完整版本: 设置2级域名咯