如何在Apache中共享一组具有两个不同域的文件?

时间:2014-06-06 03:10:27

标签: php apache

我想以两种不同的模式运行我的网站:dev和test。我目前在/var/www/mywebsite.com设置了网站并且工作正常。现在我想设置一个指向相同文件的不同URL,但只有一个区别:apache的setEnv。我想要setEnv APP_ENV test,然后我可以点击http://test.mywebsite.com/并在PHP中读取APP_ENV。这可能吗?

1 个答案:

答案 0 :(得分:1)

如果您需要两个不同的Apache设置,最好使用Apache name-based virtual hosts。关键是要有两个不同的配置,但使用相同的DocumentRoot。例如,这将是mywebsite.com

的Apache虚拟主机设置
<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

然后将配置符号链接到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