ServerAlias 是实现多域名共享同一站点的核心指令,需与 ServerName 同处一个 <VirtualHost> 块中;ServerName 指定唯一主域名,ServerAlias 以空格分隔多个别名(支持 *.example.com 通配符),二者共用 DocumentRoot 和全部配置。

ServerAlias 是 Apache 中让一个虚拟主机响应多个域名的关键指令,它必须和 ServerName 配合使用——ServerName 只能设一个主域名,其余所有备用域名都得写在 ServerAlias 后面,用空格分隔。
正确写法:空格分隔,不加引号,不写多个 ServerAlias 行
在一个
- ✅ 正确:ServerAlias www.example.com example.net www.example.net
- ❌ 错误:ServerAlias www.example.com(换行)ServerAlias example.net(重复指令会被忽略)
- ❌ 错误:ServerAlias "www.example.com example.net"(加引号会导致整个字符串被当做一个域名)
支持通配符,但仅限 * 开头的子域名
ServerAlias 支持简单的通配符语法,方便批量匹配子域名,但规则很明确:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- ✅ 允许:ServerAlias *.example.com(匹配 mail.example.com、shop.example.com 等)
- ❌ 不允许:ServerAlias example.* 或 ServerAlias www.example.* (中间或结尾的 * 无效)
- ⚠️ 注意:通配符不能用于根域名本身,*.example.com 不匹配 example.com
HTTP 和 HTTPS 必须分别配置
Apache 把 HTTP(*:80)和 HTTPS(*:443)视为两个完全独立的虚拟主机。即使内容相同,也不能共用一套 ServerAlias。
- 如果站点同时支持 http 和 https,你需要在两个
块里各自写一遍 ServerAlias - 例如:<VirtualHost *:80> 里写一次,<VirtualHost *:443> 里再写一次,且都包含全部备用域名
- SSL 证书也需覆盖所有 ServerAlias 域名,否则浏览器可能报安全警告
别忘了基础前提:DNS 解析和 NameVirtualHost(旧版本)
ServerAlias 生效不是光靠写对就行,还要确保外部条件到位:
- DNS 必须已将每个备用域名的 A 记录(或 AAAA)指向服务器 IP,否则请求根本到不了 Apache
- Apache 2.2 或更早版本:必须在全局配置中启用 NameVirtualHost *:80(端口要与
一致),否则所有 ServerAlias 都不生效 - Apache 2.4+ 默认启用基于名称的虚拟主机,无需 NameVirtualHost,但保留也不报错

















