2017-03-07 129 views
0

我想用NGINX建立一個CodeIgniter項目。但是,它已經是在線的網站,例如test.com。這意味着該項目也有$config['base_url'] = 'test.com'。但是,當我想要設置NGINX服務器塊時,我必須根據this post定義與base_url中的域相同的服務器名稱。但是,我希望網址test.dev用於開發,test.com只需鏈接到在線網站。我如何實現這一目標?不同的網站開發和生產

回答

1

創建環境。 Handling Multiple Environments

在你的index.php找到這樣一行說

//define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); 

在該行發生在目錄名稱檢查並粘貼此代碼

switch(dirname(__FILE__)) 
{ 
case 'Path\of\your\live\server\folder': 
    define('ENVIRONMENT','production'); 
break; 

case 'path\of\your\local\folder': 
    define('ENVIRONMENT','development'); 
break; 
} 

現在你有一個全局變量的環境,有價值觀生產或發展。你可以在這個變量上放置一個開關,並在config.php中給base_url賦值,或者在database.php中爲DB憑證選擇活動組。

+0

nginx在此之前。有關更多詳細信息,請參閱他的答案@shafiq。 – Stan

1

在CI中,您可以爲您正在使用的每個環境定義一個config.php文件。 在您的config文件夾中,創建一個development文件夾,其中您將config.php文件與您需要的base_url一起放入。然後,在該環境中,CI將使用該新文件而不是主文件config.php

+0

顯然我在這之前和nginx有一個不同的問題。有關更多詳細信息,請參閱@ shafiq的答案。 – Stan

2

設置您的環境變量。 https://www.codeigniter.com/user_guide/general/environments.html 爲您的生產

define('ENVIRONMENT','production'); 

和發展

define('ENVIRONMENT','production'); 

,並在您的配置文件,您可以檢查這樣或任何顯然,我有一個不同的問題與變量

if(ENVIRONMENT == 'development'){ 
    $config['base_url'] = 'test.dev'; 
}else{ 
    $config['base_url'] = 'test.com'; 
} 
+0

我試過這個,但是目前我的test.dev給出了「問題加載頁面」。 'access.log'和'error.log'也不顯示任何請求。我的'/ etc/nginx/sites-available/test.dev'文件就像原始文章中的鏈接所示。我還創建了「啓用網站」的符號鏈接。我究竟做錯了什麼? – Stan

+0

將'127.0.0.1 test.com'添加到我的'/ etc/hosts'文件導致de「Welcome to nginx!」網站,當我嘗試訪問test.com。換句話說,它現在重定向到默認頁面。 – Stan

+0

我認爲這可能是您的虛擬主機設置問題。 http://stackoverflow.com/questions/15489919/nginx-static-index-redirect – shafiq