我在 Fedora 8 上有 httpd.conf,我正在设置虚拟主机文件。这是我有的:
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
然后下面我尝试设置一个虚拟主机以在服务器上拥有多个站点:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName kadence.tv
DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:80>
ServerName nacc.biz
DocumentRoot /var/www/html/nacc/
</VirtualHost>
另外,在 /var/www/html/ 目录中,我有 kadence 站点的 index.php 文件...当我对任一站点执行此操作时,我都会获得 kadence 站点的索引...知道我做错了什么吗
编辑我的 httpd 配置文件的全部内容是这里。
答案1
如果您使用的名称与其中一个虚拟主机部分不匹配,它将默认使用第一个。我猜您正在访问 www.nacc.biz。www 很重要。名称必须完全匹配。由于 apache 没有 www.nacc.biz 的虚拟主机部分,因此它使用第一个 (kadence.tv) 作为默认值。
查看 ServerAlias 指令,并使用它来指定您希望使用的所有服务器名称。
答案2
1 检查活动名称虚拟主机.打开/etc/apache2/ports.conf文件:
NameVirtualHost *:80
2 检查 DNS
# ping app.local
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
# ping john.app.local
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
3 检查 Apache 配置(/etc/apache2/sites-enabled/000-default):
<VirtualHost *:80>
ServerName app.local
DocumentRoot /var/www
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName john.app.local
DocumentRoot /var/www/john
</VirtualHost>
$ sudo apache2ctl configtest
Syntax OK
$ sudo apache2 -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server app.local (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost app.local (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost john.app.local (/etc/apache2/sites-enabled/000-default:12)
4测试Apache:
$ curl http://john.app.local
john
$ curl http://app.local
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>