我想以两种不同的模式运行我的网站:dev和test。我目前在/var/www/mywebsite.com
设置了网站并且工作正常。现在我想设置一个指向相同文件的不同URL,但只有一个区别:apache的setEnv
。我想要setEnv APP_ENV test
,然后我可以点击http://test.mywebsite.com/
并在PHP中读取APP_ENV
。这可能吗?
答案 0 :(得分:1)
如果您需要两个不同的Apache设置,最好使用Apache name-based virtual hosts。关键是要有两个不同的配置,但使用相同的DocumentRoot
。例如,这将是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
然后将配置符号链接到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
。