是否可以使用一个 IP / 域名设置多个虚拟主机?
我们有一个域名 (example.com) 指向我们的服务器 ip (123.123.555.555)。在位置 123.123.555.555 处,我们需要以下文件夹结构:
# production level
/htdocs/www/prod/proj1/
/htdocs/www/prod/proj2/
# dev level
/htdocs/www/dev/proj3/
/htdocs/www/dev/proj4
理想情况下,我们希望example.com
解决/htdocs/www/prod/
并example.com/dev
解决/htdocs/www/dev/
。
够简单了吧?
注意事项:
dev
并prod
需要不同的安装目录/apache 规则(allow deny from
等)prod
需要解析不包含prod
在 URL 中的对象。example.com/proj1
将转到example.com/prod/proj1
迄今的尝试......
我尝试过使用相同的虚拟主机进行设置,但为目录指定别名会使其/
陷入困境,声称稍后将被覆盖。这是有道理的,因为/
匹配/
,而且/dev
我也尝试过使用 apache2 的 sites-available/sites-enabled 设置多个虚拟主机,但似乎无法根据 ip/domain 进行区分。通常我会尝试<Directory 'sub.domain.com'>
类似<Directory 'sub2.domain.com'>
答案1
您至少有两个选择:
为 example.com 的子域设置虚拟主机并将其指向您的 dev 文件夹。以下是要放入 sites-available 的 .conf 文件的示例:
<VirtualHost *:80> DocumentRoot "/htdocs/www/dev/proj3/" ServerName dev.example.com <Directory "/htdocs/www/dev/proj3/"> allow from all Options +Indexes </Directory> </VirtualHost>
为不同的端口设置虚拟主机,即 8080 或您选择的任何端口,并将其指向 dev 文件夹。
<VirtualHost *:8080> DocumentRoot "/htdocs/www/dev/proj3/" ServerName example.com <Directory "/htdocs/www/dev/proj3/"> allow from all Options +Indexes </Directory> </VirtualHost>