1

我只有两个网站指向我的服务器 IP,Asite.com并且Bsite.com. 我尝试添加一个网站,所以我指向Csite.com了我的服务器 IP(但我还没有为 site3.com 注册虚拟主机)。即使我没有注册虚拟主机,当我访问Csite.comapache时怎么会识别它?Asite.comCsite.com

httpd.conf

Listen 8080
NameVirtualHost *:8080

网站

<VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        ServerName asite.com
        ServerAlias asite.com *.asite.com
        DocumentRoot /var/www/asite.com/public
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/asite.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ErrorLog /var/log/httpd/error_log

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

^同样适用于Bsite.com

4

3 回答 3

1

当它没有 ServerName 匹配时,它使用第一个列出的。您会发现您还可以使用原始 IP 地址访问 Asite.com。

如果您对此感到不舒服,您可以创建一个不同的虚拟主机作为列出的第一个虚拟主机<VirtualHost *:8080>,并配置它只是重定向到其他地方。或者给出 404 消息等。

于 2012-06-03T13:19:41.010 回答
1

第一个虚拟主机也是默认的:

“星号匹配所有地址,因此主服务器不提供任何请求。由于 www.example1.com 在配置文件中位于第一位,因此它具有最高优先级,可以视为默认或主服务器。这意味着如果收到的请求与指定的 ServerName 指令之一不匹配,它将由第一个 VirtualHost 提供服务。”

请参阅“在单个 IP 地址上运行多个基于名称的网站”。http://httpd.apache.org/docs/2.0/vhosts/examples.html

于 2012-06-03T13:21:47.573 回答
1

发生这种情况是因为您将 csite.com 指向您的本地主机,并且第一个虚拟主机被识别为本地主机,因此如果您切换 siteA 和 siteB,那么它肯定是虚拟主机 b 首先并在浏览器中键入“localhost”或 sitec.com 它将显示 siteb.com

不用担心; 这不是问题。它应该发生。

您实际上并未将 sitec.com 指向 localhost,但如果您在主机文件中创建它,我们将其指向您的域,它将带您到第一个指定的文件!

于 2012-06-10T00:35:55.753 回答