我正在尝试在 Apache 配置中使用虚拟主机来设置子域。我的设置如下:
NameVirtualHost *:80
<VirtualHost *>
ServerName www.website.com
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *>
ServerName wiki.website.com
DocumentRoot "/var/www/dekiwiki"
</VirtualHost>
当我重新启动 apache 时,www.website.com 和 wiki.website.com 都会转到 /var/www/html 中的主网站。
任何帮助均感激不尽。
答案1
在 VirtualHost 中必须使用与 NameVirtualHost 中相同的签名:
<VirtualHost *:80>
答案2
以下是我在 apache2 服务器上执行子域名的方法...
NameVirtualHost *:80
# Many other hosts...
<VirtualHost servers.international-anarchy.com>
ServerName servers.international-anarchy.com
DocumentRoot "/http/international-anarchy.com/servers/"
<Directory "/http/international-anarchy.com/servers/">
Options +Indexes FollowSymLinks
AllowOverride None
Allow from all
Order allow,deny
</Directory>
</VirtualHost>
<VirtualHost status.international-anarchy.com>
ServerName status.international-anarchy.com
DocumentRoot "/http/international-anarchy.com/status/"
<Directory "/http/international-anarchy.com/status/">
Options +Indexes FollowSymLinks
AllowOverride All
Allow from all
Order allow,deny
</Directory>
</VirtualHost>
这就是我让 apache2 正确呈现每个主机的子域的方法,并且我将所有这些设置放在直接从主 apache 配置中包含的虚拟主机文件中。
答案3
我发现了问题。由于虚拟主机设置为:
NameVirtualHost *:80
我还需要在 VirtualHost 指令中设置端口。因此
<VirtualHost *:80>
而不仅仅是
<VirtualHost *:80>
使用“httpd -S”命令显示虚拟主机未被占用
答案4
在端口 80 之后还有其他 Listen 指令吗?
如果是这样,你可能需要更改<VirtualHost *>
为<VirtualHost *:80>
您可以指定:port 来更改匹配的端口。如果未指定,则默认为与主服务器最新的 Listen 语句相同的端口。您还可以指定 :* 来匹配该地址上的所有端口