我们计划为多个站点托管一个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');
}
}
基本上说,在我的数据库中查找此服务器名称,获取当前的“社区”(我的站点),并在会话中存储所有设置(主题,站点名称等).
确切的查询可能与您不一样.这只是为了给你一般的想法.使其适应您的数据库架构,或者您存储每个网站的设置.