我最近有我的域名与我的服务器正常工作,并设法让子域名指向特定的文件夹。 不过,我刚刚注意到一个小问题。 我有/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. 部分。 我不想要这样的事情发生。 有人可以提出任何修正?
如果…
VirtualHost块是您的configuration中的第一个, 并且 test.mydomain.co.uk 然后Apache将使用上面的VirtualHost块test.mydomain.co.uk 。 也就是说,在没有明确匹配的情况下,Apache将使用它find的第一个VirtualHost定义。 从文档 :
如果在包含最具体匹配的IP地址和端口组合的虚拟主机组中找不到匹配的ServerName或ServerAlias,则将使用与之匹配的第一个列出的虚拟主机。
解决了这个问题:
<VirtualHost *:80> VirtualDocumentRoot /local/www/%1 ServerName dev.mydomain.co.uk ServerAlias dev.mydomain.co.uk *.dev.mydomain.co.uk </VirtualHost>
通过使用ServerAlias。