我在 Apache 中设置了两个虚拟主机。一个默认虚拟主机用于处理所有请求,另一个用于特定子域。www 目录设置如下:
/var/www
/var/www/subdomain
虚拟主机配置如下:
<VirtualHost *:80>
DocumentRoot /var/www
<Directory />
Options None
AllowOverride None
</Directory>
<Directory /var/www>
Options None
AllowOverride None
Deny from all
</Directory>
</VirtualHost>
<VirtualHost subdomain>
ServerName subdomain.domain.com
DocumentRoot /var/www/subdomain
<Directory /var/www/subdomain>
Options None FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
现在我希望为 提供任何subdomain.domain.com
服务/var/www/subdomain
,并拒绝任何其他请求。但是当我访问 domain.com 时,它提供/var/www/subdomain
。
如果有人能告诉我我做错了什么,我将不胜感激。谢谢!
运行时编辑附加信息apache2ctl -S
/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using XX.XXX.XXX.XX for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain (/etc/apache2/sites-enabled/default:1)
port 80 namevhost domain (/etc/apache2/sites-enabled/default:1)
port 80 namevhost sub.domain.com (/etc/apache2/sites-enabled/subdomain:1)
Syntax OK
答案1
你的问题在这里:
<VirtualHost subdomain>
不要这样做,因为无论解析到哪个 IP,它都会赋予该虚拟主机优先于现有虚拟主机的优先级。它应该与<VirtualHost *:80>
您现有的虚拟主机相匹配。ServerName
指令是虚拟主机的“名称”应该放在哪里。
NameVirtualHost *:80
如果您还没有的话,您还需要一个地方。