2013-05-13 121 views
2

我正在codeigniter網站上工作。我有一個單一的應用程序,這個應用程序被不同的用戶使用,每個用戶都有自己的DB(它自己的客戶端也是)。我需要如何接近這個雲系統。 正如我有應用程序文件夾的單一副本,並且只有每個用戶的數據庫差異。 我已經嘗試通過在codeigniter中創建子域目錄並編寫索引文件和htaccess文件,以便我可以訪問我的原始應用程序。但是我需要url中的子域路徑以及如何根據該子域URL路徑連接到數據庫的方式。根據codeigniter中的子域URL動態設置數據庫?

htaccess文件。

RewriteEngine On 
RewriteRule /test/(.*) /$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php 

哪種方式,我應該遵循來完成這個work.Please幫助 在此先感謝。

+0

沒有什麼做'.htaccess',而是你必須申請你的邏輯'route.php' – diEcho 2013-05-13 04:56:34

+0

我如何使用route.php?請建議任何artical或任何示例來閱讀... – 2013-05-13 05:18:52

+0

閱讀此文章:http://net.tutsplus.com/tutorials/php/basecamp-style- subdomains-with-codeigniter/ – diEcho 2013-05-13 05:20:38

回答

2

下面是我們做什麼:

在配置/ database.php中,我們定義了一組不同的DB的設置,是基於域採摘。您可以輕鬆調整/擴展。

if($_SERVER['SERVER_NAME'] == 'www.stagingserver.com'){ 
    $active_group = "staging"; 
    $db['staging']['hostname'] = "95.xxx.xxx.xxx";  
} else { 
    $active_group = "default"; 
} 

$db['default']['hostname'] = "localhost:8889"; 
$db['default']['username'] = "root"; 
$db['default']['password'] = "root"; 
$db['default']['database'] = "database"; 
$db['default']['dbdriver'] = "mysql"; 
$db['default']['dbprefix'] = ""; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ""; 
$db['default']['char_set'] = "utf8"; 
$db['default']['dbcollat'] = "utf8_general_ci"; 

$db['staging']['username'] = "movers_user"; 
$db['staging']['password'] = "staging_user"; 
$db['staging']['database'] = "staging_database"; 
$db['staging']['dbdriver'] = "mysql"; 
$db['staging']['dbprefix'] = ""; 
$db['staging']['pconnect'] = TRUE; 
$db['staging']['db_debug'] = TRUE; 
$db['staging']['cache_on'] = FALSE; 
$db['staging']['cachedir'] = ""; 
$db['staging']['char_set'] = "utf8"; 
$db['staging']['dbcollat'] = "utf8_general_ci"; 
+0

我按目錄模型..我已經完成與適當的重新我的目錄到主應用程序,但現在我有點迷惑關於每個目錄的數據庫連接... – 2013-05-15 07:20:47

+0

我認爲你仍然可以使用上述方法。 CI將在使用共享系統文件夾的同時,在相應應用程序的應用程序文件夾中使用database.php的數據庫設置。 – 2013-05-16 05:42:32

2

我已經試過這樣的事情..... 在我database.php中文件

$active_group = 'default'; 
$active_record = TRUE; 
$uri = $_SERVER['REQUEST_URI']; 
$pieces = explode('/', $uri); 
if($pieces[1]==""){ 

      $_SESSION['user_db_username']='**'; 
      $_SESSION['user_db_pass']='**'; 
      $_SESSION['user_db_name']='**'; 
} 

else 
{ 
    $link = mysql_connect('**', '**', '**'); 
    if($link){ 
     $db_selected = mysql_select_db('**', $link); 
     if ($db_selected) 
     { 
      $query_arr= "SELECT * FROM ** where domain='".$pieces[1]."' "; 
      $queryResult_arr=mysql_query($query_arr,$link); 
      while($row=mysql_fetch_assoc($queryResult_arr)) 
      { 
       $_SESSION['user_db_user']=$row['**']; 
       $_SESSION['user_db_pass']=$row['**']; 
       $_SESSION['user_db_name']=$row['**']; 

      } 
     } 
    } 
} 


$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = $_SESSION['user_db_username']; 
$db['default']['password'] = $_SESSION['user_db_pass']; 
$db['default']['database'] = $_SESSION['user_db_name'];