我在 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 之后。