我最近让我的域名与我的服务器配合良好,并设法让子域名指向特定文件夹。然而,我刚刚注意到一个小问题。我已将其/etc/apache2/sites-enabled/000-default
设置为:
<VirtualHost *:80>
VirtualDocumentRoot /local/www/%1
ServerName *.dev.localhost
</VirtualHost>
当我打开test.dev.mydomain.co.uk
它时,它显示了内容,/local/www/test/
这很棒。但是,我输错了域名,意识到test.mydomain.co.uk
当你错过.dev.
部分时,它也会做同样的事情。我不希望这种情况发生。有人能提出任何修复建议吗?
答案1
如果...
- 上面的块
VirtualHost
是你的配置中的第一个块,和 - 没有明确匹配,例如,
test.mydomain.co.uk
...然后 Apache 将使用上面的VirtualHost
块test.mydomain.co.uk
。也就是说,如果没有显式匹配,Apache 将使用VirtualHost
它找到的第一个定义。从文档:
如果在包含最具体的匹配 IP 地址和端口组合的虚拟主机集合中未找到匹配的 ServerName 或 ServerAlias,则将使用匹配的第一个列出的虚拟主机。
答案2
解答了疑问:
<VirtualHost *:80>
VirtualDocumentRoot /local/www/%1
ServerName dev.mydomain.co.uk
ServerAlias dev.mydomain.co.uk *.dev.mydomain.co.uk
</VirtualHost>
通过使用 ServerAlias。