我正在尝试在同一个 IP 地址下运行 dev1.domain.com 和 dev2.domain.com。我的虚拟主机配置正确。当我尝试访问 dev2.domain.com 时,它会自动重定向到 dev1.domain.com。我运行了以下命令,apachectl -t -D DUMP_VHOSTS
它显示了以下输出
*:80 is a NameVirtualHost
default server dev1.domain.com (/etc/apache2/sites-enabled/conv.conf:1)
port 80 namevhost dev1.domain.com (/etc/apache2/sites-enabled/conv.conf:1)
alias www.dev1.domain.com
port 80 namevhost dev2.domain.com (/etc/apache2/sites-enabled/find.conf:1)
alias www.dev2.domain.com
如您所见,apache2 将 dev1.domain.com 作为默认服务器。我该如何避免这种情况?
为了简单起见,我将在下面添加虚拟主机配置
对于 dev.domain.com
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName dev1.domain.com
ServerAlias www.dev1.domain.com
DocumentRoot /var/www/folder/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/folder/>
AllowOverride All
</Directory>
</VirtualHost>
对于 dev2.domain.com
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName dev2.domain.com
ServerAlias www.dev2.domain.com
DocumentRoot /var/www/another_folder/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/finder/>
AllowOverride All
</Directory>
</VirtualHost>
提前致谢。
答案1
当配置中没有其他 vhost 与域匹配时,将使用默认 vhost 提供服务。
除非另有配置,默认 vhost 是第一个配置的 vhost。
如果正在提供服务的默认虚拟主机,则您尝试连接的域与配置的任何虚拟主机都不匹配。
使用 include 语句将文件按词汇顺序读入 apache 配置中。
在您显示的 vhost 配置中,您没有 dev1,这并没有真正的帮助 - 细节很重要。