php – 我们是否可以使用一个数据库为多个域构建YII多站点应用程序

我们计划为多个站点托管一个CMS.

在YII中我们可以做到这一点,想法很简单,我们希望为所有域共享单个应用程序和单个数据库,但我们将让他们为不同的网站选择不同的主题.

通过网站我的意思是完全不同的域名.

还有什么其他设置可以将所有域指向单个服务器?

编辑::

我不希望每个域的不同服务目录.我想做什么,只保留一个安装.


/服务器/网络/主

那么所有的域名

a.com,b.com,c.com读取相同的目录“/ server / www / master”和相同的DB.和记录在网站的基础上得到文件管理器.

最佳答案 我和Yii完全一样,所以是的,这是可能的.

在Apache设置中,确保将所有域名指向同一目录(使用ServerAlias – http://httpd.apache.org/docs/2.2/mod/core.html#serveralias).

在我的数据库中,我创建了一个表,每个网站都有一行,将域名存储为其中一个字段.

在我的ApplicationConfigBehavior.php :: beginRequest(为每个请求执行)中,我做了类似这样的事情:

/**
     * Load configuration that cannot be put in config/main
     */
    public function beginRequest()
    {
        if(empty(Yii::app()->session['community'])){
            $current_community = Community::model()->with(array(
                'communityHosts'=>array(
                    'joinType'=>'INNER JOIN',
                    'condition'=>'`communityHosts`.hostname= :hostname',
                    'params' => array(':hostname' => $_SERVER['SERVER_NAME'])
                ),
            ))->find(); 
            Yii::app()->session['community'] = serialize($current_community);
        }
        else{
            $current_community = unserialize(Yii::app()->session['community']);
        }

        if(!empty($current_community)){
            Yii::app()->name = $current_community->name;
            Yii::app()->params['currentCommunity'] = $current_community;
            Yii::app()->language = $current_community->language;
        }
        else{
            //TODO: Throw error
            session_unset();
            die('Hostname ' . $_SERVER['SERVER_NAME'] .' not found');
        }


    }

基本上说,在我的数据库中查找此服务器名称,获取当前的“社区”(我的站点),并在会话中存储所有设置(主题,站点名称等).

确切的查询可能与您不一样.这只是为了给你一般的想法.使其适应您的数据库架构,或者您存储每个网站的设置.

点赞