2013-10-05 47 views
4

我們計劃爲多個站點託管一個CMS。有沒有辦法用一個數據庫爲多個域建立YII多站點應用程序

是否有在誼的方式,我們可以做到這一點,這個想法很簡單,我們要爲所有的域共享單一的應用程序和單一的數據庫,但我們會讓他們選擇不同的網站不同的主題。

通過網站我的意思是完全不同的域名。

我們會有什麼其他的設置做點所有的域單一服務器?

編輯::

我不想爲每個域的不同服務目錄。我想要做什麼,只保留一個安裝。

即 /服務器/網絡/主

然後所有域

a.com,b.com,c.com讀取相同的目錄 「/服務器/網絡/主」 和相同DB 。並在站點的基礎上記錄獲取文件管理器。

+0

http://stackoverflow.com/questions/15109494/how-to-reuse-code-across-multiple-domains – redGREENblue

+0

謝謝RGB,但這不是我想要的,我已經按照我的要求編輯了問題。 –

回答

2

我已經完成了與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'); 
     } 


    } 

這基本上說,會在我的數據庫此服務器名,獲得當前「社區」(我的網站),並在會話中存儲所有設置(主題,網站名稱等)。

確切的查詢可能不適合你一樣。這只是給你一個大概的想法。將其調整到您的數據庫模式,或者您存儲每個網站的設置。

+0

這幫助了很多。謝謝。 –

0

在Apache虛擬主機文件,在使用

defined('SITE_NAME') || define('SITE_NAME', (getenv('SITE_NAME')); 

使用在配置常量的代碼中設置站點名稱

SetEnv SITE_NAME "CMSA" 

獲取網站的名稱和過濾根據網站上顯示的記錄。

同樣可以聲明主題。

+0

「CMSA」是否捐贈了一些具體的價值?或者只是純文本? Site_name如何在不同的domain_name上有所不同我將只有一個.htaccess –

+0

考慮你的域名是http://cmsa.com。 site_name是域名的縮寫形式。僅用於示例,我將其稱爲site_name。常數名稱可以是任何你想要的。 這些值應該在apache虛擬主機文件中聲明。每個域都有不同的主機文件。 –

相關問題