我承认我对VirtualHosts的了解可能是粗略的,但是我正在承担一项我正在苦苦挣扎的任务。我需要在我的EC2实例上有两个域到达两个不同的文件夹。我们称它们为domaina.com和domainb.com。
我已经这样设置了/etc/httpd/conf/httpd.conf
文件;
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/domaina/www/html"
ServerName "domaina.com"
ServerName "www.domaina.com"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/domainb/www/html"
ServerName "domainb.com"
ServerName "www.domainb.com"
</VirtualHost>
更新后,我已经使用sudo service httpd restart
命令重新启动了Apache。
据我所知,domaina.com
正常运行。它正在加载/ var / domaina / www / html托管的网站。但是,访问domainb.com
会将我带到domaina.com的网站。似乎没有路由到/ var / domainb / www / html,而是路由到/ var / domaina / www / html /。
尝试将其更改为:
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/domaina/www/html"
ServerName "domaina.com"
ServerAlias "www.domaina.com"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/domainb/www/html"
ServerName "domainb.com"
ServerAlias "www.domainb.com"
</VirtualHost>
ServerName
指令可能出现在VirtualHost定义内的任何位置。但是,每个外观都会覆盖先前的外观(在该VirtualHost中)。您的ServerName "domainb.com"
被ServerName "www.domainb.com"
覆盖。此后,由于主机名domainb.com
不匹配,因此使用默认值VirtualHost
,它是前一个。