使用 a2ensite 在 ubuntu 14.04 上设置通配符子域名?

使用 a2ensite 在 ubuntu 14.04 上设置通配符子域名?

我在 ubuntu 14.04 上使用 apache。我为我的网站设置了一个通配符域名,但它没有按照我想要的方式工作。我想要

www.example.com --> /var/www/mysite
example.com --> /var/www/mysite

以及其他一切

*.example.com --> /var/www/myothersite

但现在它是这样运作的

example.com --> /var/www/mysite

www.example.com --> /var/www/myothersite
*.example.com --> /var/www/myothersite

我通过在 sites-available/ 中创建两个 conf 文件来创建虚拟主机

example.com.conf
catchall.example.com.conf

以下是 example.com.conf 的内容

ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/mysite

以下是 catchall.example.com.conf 的内容

ServerName catchall.example.com
ServerAlias *.example.com
DocumentRoot /var/www/myothersite

创建文件后,我在文件上运行了 a2ensite 并重新加载了 apache。有什么想法可以让我在使用 sites-available 和 a2ensite 的同时实现我想要的结果吗?

答案1

我认为问题在于 Apache 按字典顺序解析包含的配置文件,并且 catchall.example.com.conf 在 example.com.conf 之前被解析。

结果是www.example.com与 匹配 *.example.com,而不是 example.com.conf 文件中的显式 ServerAlias。

解决方案是将 catchall.example.com.conf 重命名为 wildcard.example.com.conf 之类的名称,使其在字母表中排在 example.com.conf 之后。

相关内容