Apache2:未定义指向同一虚拟主机的域

Apache2:未定义指向同一虚拟主机的域

我在带有虚拟主机的 Debian 机器中配置了 Apache2。我有几个域指向该机器的 IP 地址。配置了虚拟主机的域运行正常。但如果我在浏览器中输入指向该机器但未配置虚拟主机的域,我会得到该机器中另一个域的随机虚拟主机。不是随机的,而是虚拟主机之一(始终相同),但我不知道为什么是它。正确的说法应该是未配置为虚拟主机的域返回主机名错误或其他错误,对吗?

有人知道如何解决这个问题吗?

我的一个虚拟主机配置文件:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName dl.domain.com

        DocumentRoot /var/www/dl.domain.com/public_html/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/dl.domain.com/public_html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

我的 apache2.conf

http://www.speedyshare.com/files/29107024/apache2.conf

谢谢您的帮助

答案1

示例配置:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

定义的第一个虚拟主机将作为默认主机。

http://httpd.apache.org/docs/2.2/vhosts/name-based.html#using

如果您希望对与任何特定虚拟主机不匹配的请求进行特殊配置,只需将该配置放入容器中并在配置文件中首先列出它。

“正确的答案是未配置为虚拟主机的域名会返回主机名错误或其他错误,对吗?”

如果您确实想要此行为,只需创建虚拟主机,将其放在所有其他 VirtualHost 条目之前并指向空文件夹。如果没有要提供的文档,它将出现 403 错误。

答案2

为了帮助调试此类问题,运行“apache2ctl -s”[1] 将显示 apache 如何匹配 vhosts 以及匹配的顺序。

[1]: apache2ctl 在某些发行版中可能被命名为 apachectl

相关内容