我在 apache2 上创建虚拟主机时遇到问题。我的网站托管在 debian 10 服务器上。我domain.conf
在 处添加了文件/etc/apache2/sites-enabled
。在domain.conf
文件中,我简单地写道:
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www/domain
ErrorLog ${APACHE_LOG_DIR}/domain-error.log
CustomLog ${APACHE_LOG_DIR}/domain-access.log combined
</VirtualHost>
问题是,每当我提示任何服务器别名(例如xyz.domain.com
或 )时,test.domain.com
它都会打开index.php
。/var/www/domain
但我只想允许domain.com
和www.domain.com
。
答案1
当域名与虚拟主机不匹配时,将使用两个位置之一。
第一种可能性是基本配置,即您在任何虚拟主机之外的默认配置中指定的配置。因此,请检查DocumentRoot
基本配置(grep DocumentRoot /etc/apache2/*
如果您不知道在哪里查找,请尝试)。
其次,如果您想要一个“所有虚拟主机”配置,您可以通过创建一个与基本配置具有相同ServerName
IP/端口配置的虚拟主机来屏蔽基本配置。在与基本配置相同的配置中创建一个虚拟虚拟主机,该aaa.conf
虚拟主机可以将用户发送到沙盒,或返回错误,或重定向到,或您选择的任何操作。ServerName
ServerAlias
www.example.com
参考:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
主要宿主消失
任何与现有请求不匹配的请求都由全局服务器配置处理,无论主机名或服务器名称如何。
当您将基于名称的虚拟主机添加到现有服务器,并且虚拟主机参数与预先存在的 IP 和端口组合匹配时,请求现在将由显式虚拟主机处理。在这种情况下,通常明智的做法是创建一个默认虚拟主机,其 ServerName 与基本服务器的 ServerName 匹配。然后可以将具有相同接口和端口但需要单独配置的新域添加为后续(非默认)虚拟主机。