2014-06-06 33 views
1

我想用兩種不同的模式運行我的網站:開發和測試。我目前在/var/www/mywebsite.com中設置了該網站,並且正常工作。現在我想設置一個指向相同文件的不同url,但只有一個區別:apache的setEnv。我想要setEnv APP_ENV test,所以我可以打到http://test.mywebsite.com/並在PHP中閱讀APP_ENV。這可能嗎?如何在Apache中共享一組包含兩個不同域的文件?

+0

這更適合服務器故障,但您可能要查找的是兩個不同的Apache虛擬主機。一個用於'mywebsite.com',另一個用於'test.mywebsite.com'。 – JakeGould

+0

同意,我通過複製常規配置和更改名稱,然後symlinking像這樣:'ln -s /var/www/mywebsite.com/var/www/test.mywebsite.com',並且「工作正常「因爲我可以'捲曲'新的URL,但它沒有拿起'setEnv'。 – wulftone

+0

我不認爲你需要有一個符號鏈接才能工作。看看我的答案。爲了記錄,你在什麼操作系統? CentOS的/紅帽? Ubuntu的/ Debian的? – JakeGould

回答

1

如果你想要兩個不同的Apache設置,最好使用Apache name-based virtual hosts。關鍵是要有兩個不同的配置,但使用相同的DocumentRoot。因此,舉例來說,這將是Apache的虛擬主機設置爲mywebsite.com

<VirtualHost *:80> 
    DocumentRoot /var/www/mywebsite.com 
    ServerName mywebsite.com 
    ServerAlias mywebsite.com 

    ErrorLog /var/log/apache2/mywebsite.com.error.log 
    CustomLog /var/log/apache2/mywebsite.com.access.log combined 

    SetEnv APPLICATION_ENV "prod" 

    <Directory "/var/www/mywebsite.com"> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

</VirtualHost> 

再這樣做了test.mywebsite.com

<VirtualHost *:80> 
    DocumentRoot /var/www/mywebsite.com 
    ServerName test.mywebsite.com 
    ServerAlias test.mywebsite.com 

    ErrorLog /var/log/apache2/test.mywebsite.com.error.log 
    CustomLog /var/log/apache2/test.mywebsite.com.access.log combined 

    SetEnv APPLICATION_ENV "test" 

    <Directory "/var/www/mywebsite.com"> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

</VirtualHost> 

我假設你是一個Ubuntu的安裝。因此,我建議把他們分成兩個不同的文件是這樣的:

nano /etc/apache2/sites-available/mywebsite.com 

nano /etc/apache2/sites-available/test.mywebsite.com 

然後符號鏈接CONFIGS到sites-enabled這樣的:

sudo ln -s /etc/apache2/sites-available/mywebsite.com /etc/apache2/sites-enabled/mywebsite.com 

sudo ln -s /etc/apache2/sites-available/test.mywebsite.com /etc/apache2/sites-enabled/test.mywebsite.com 

重啓Apache這樣的:

sudo service apache2 restart 

然後你應該與APPLICATION_ENV "prod"做生意清楚地去mywebsite.comAPPLICATION_ENV "test"明確去test.mywebsite.com

相關問題