默认虚拟主机覆盖通配符子域虚拟主机

时间:2019-04-22 22:42:44

标签: apache wildcard-subdomain

我正在尝试在其中创建通配符域

-我在https://example.com上有根服务器(登录页面)

-以及https://*.example.com

上的所有子域(完全动态)

这是通配符虚拟主机(在SSL include下列出,其中包含根域):

<VirtualHost *:443>
    ServerName test.example.com
    ServerAlias *.example.com:443

    DocumentRoot /opt/lampp/htdocs/production/

    SSLEngine on
    SSLCertificateFile /etc/cert.pem
    SSLCertificateKeyFile /etc/privkey.pem
    SSLCertificateChainFile /etc/chain.pem
</VirtualHost>

这对于test.example.com正常工作,但是当我尝试进行其他操作(例如123.example.com)时,它将默认使用httpd-ssl中定义的第一个虚拟主机,而不是该主机。

所以我的问题是,看到我在virtualhost中设置的任何ServerName都能正常工作,而其余的都不起作用,如何让子域覆盖默认的virtualhost?如果没有ServerName,则始终默认为根(仅ServerAlias)。

我尝试将这段代码放在默认主机之前(在httpd-ssl之前),但始终将其用于root用户。

谢谢!

1 个答案:

答案 0 :(得分:0)

我已通过将代码段置于默认值上方并删除ServerName来修复了该问题。问题是我的根目录www。中有ServerName,但我没有使用www。