我想用兩種不同的模式運行我的網站:開發和測試。我目前在/var/www/mywebsite.com
中設置了該網站,並且正常工作。現在我想設置一個指向相同文件的不同url,但只有一個區別:apache的setEnv
。我想要setEnv APP_ENV test
,所以我可以打到http://test.mywebsite.com/
並在PHP中閱讀APP_ENV
。這可能嗎?如何在Apache中共享一組包含兩個不同域的文件?
1
A
回答
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.com
和APPLICATION_ENV "test"
明確去test.mywebsite.com
。
相關問題
- 1. 如何在兩個不同的域中共享PHP會話
- 2. 如何包含同一頭文件的兩個不同版本?
- 3. 如何共享之間的cookie的兩個不同的領域
- 4. 在同一個包中的兩個源文件之間共享變量
- 5. 如何在同一個域上的Windows上共享事件?
- 6. 如何在一個郵件編輯器中共享兩個不同的內容?
- 7. 如何在maven項目中包含共享對象文件
- 8. 如何在Maven中組織一個包含共享庫的項目
- 9. 如何防止在包含文件中包含兩次相同的文件?
- 10. 如何在兩個nib文件之間共享一個NSArrayController?
- 11. 在Nuget包中包含共享的PowerShell文件?
- 12. 如何在同一個xhtml中包含相同的xhtml兩次
- 13. 包含一個共同的文件在一個文件內失敗Codeigniter
- 14. 如何在共享內存的同一區域上工作的兩個進程之間共享鎖定?
- 15. SSRS - 在兩個表中共享相同的頭文件
- 16. autotools:一個項目包含一個可執行文件,一個共享obj和一個「共享」內部庫
- 17. Linux中兩個不同的進程如何調用共享庫文件?
- 18. 如何在同一個名稱中包含兩個文件(在不同的項目中)?
- 19. 如何共享PHP變量在2個不同的PHP文件
- 20. 共享主機 - 如何在web根目錄下包含文件?
- 21. 兩個模型共享同一個表?
- 22. 如何包含不在同一目錄中的js文件?
- 23. 如何在Doxygen中創建一個僅包含「公共」API文件的文件
- 24. 包含相同值的兩個不同領域結合的行
- 25. 如何讓Symfony中的兩個應用程序共享組件?
- 26. 在兩個域之間共享圖像文件夾cakephp
- 27. 如何共享包含文件句柄的對象?
- 28. (ReactJs)如何在另一個組件中包含多個組件?
- 29. 在Xcode 5中,我可以在兩個不同的故事板中共享同一個viewController.m文件嗎?
- 30. 如何在Apache Ant中創建包含子文件但不包含包含目錄的文件集?
這更適合服務器故障,但您可能要查找的是兩個不同的Apache虛擬主機。一個用於'mywebsite.com',另一個用於'test.mywebsite.com'。 – JakeGould
同意,我通過複製常規配置和更改名稱,然後symlinking像這樣:'ln -s /var/www/mywebsite.com/var/www/test.mywebsite.com',並且「工作正常「因爲我可以'捲曲'新的URL,但它沒有拿起'setEnv'。 – wulftone
我不認爲你需要有一個符號鏈接才能工作。看看我的答案。爲了記錄,你在什麼操作系統? CentOS的/紅帽? Ubuntu的/ Debian的? – JakeGould