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

Posted

技术标签:

【中文标题】默认虚拟主机覆盖通配符子域虚拟主机【英文标题】:Default virtualhost overriding wildcard subdomain virtual host 【发布时间】:2019-09-12 02:17:29 【问题描述】:

我正在尝试创建通配符域

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

-以及 https://*.example.com 上的所有子域(完全动态)

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

<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 中定义的第一个虚拟主机,而不是这个。

所以我的问题是,看到我在虚拟主机中设置的任何 ServerName 都可以,其余的都没有,我怎样才能让子域覆盖默认的虚拟主机?如果没有 ServerName,它始终默认为根(仅 ServerAlias)。

我曾尝试在默认主机之前(在 httpd-ssl 内)放置此代码,但之后它总是将此代码用于 root。

谢谢!

【问题讨论】:

【参考方案1】:

我已通过将此 sn-p 置于默认值之上并删除 ServerName 来修复它。问题是我在根 www. 中有 ServerName,但我没有使用 www。

【讨论】:

以上是关于默认虚拟主机覆盖通配符子域虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

在 xampp localhost 中创建通配符子域

Windows中的Apache通配符虚拟主机(xampp)[重复]

.htaccess 问题、虚拟子域和 Codeigniter

带有通配符/非通配符子域混合的 Apache Config

ssl 通配符子域 www.sub.domain.com

nginx 为通配符域配置不同的证书