apache 实现二级域名自动泛解析到同名目录,核心是启用 mod_vhost_alias 模块 + virtualdocumentroot 指令:需取消 loadmodule vhost_alias_module 行注释,配置 serveralias .example.com 与 virtualdocumentroot /var/www/%1,并配合 dns 泛解析(.example.com → 服务器ip)及对应目录(如 /var/www/a)的创建与权限设置。

Apache 实现二级域名自动泛解析到同名目录,核心是启用 mod_vhost_alias 模块 + VirtualDocumentRoot 指令,配合 DNS 泛解析,无需为每个子域名单独写虚拟主机配置。
启用 mod_vhost_alias 并确认模块已加载
该模块是实现动态目录映射的基础,必须启用:
- 编辑 Apache 主配置文件(如
/etc/apache2/apache2.conf或/usr/local/etc/apache2/httpd.conf) - 确保以下两行未被注释:
LoadModule vhost_alias_module modules/mod_vhost_alias.soAddModule mod_vhost_alias.c(旧版 Apache 可能需要,新版通常省略) - 保存后执行
sudo apache2ctl -t校验语法,再sudo systemctl reload apache2(或apachectl graceful)生效
配置泛域名虚拟主机并设置动态根目录
在 <virtualhost></virtualhost> 块中使用 VirtualDocumentRoot,让 a.example.com 自动指向 /var/www/a/:
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 添加如下配置(替换
example.com为你的真实域名):<virtualhost><br> ServerName example.com<br> ServerAlias *.example.com<br> UseCanonicalName Off<br> VirtualDocumentRoot /var/www/%1<br> ErrorLog ${APACHE_LOG_DIR}/subdomain_error.log<br> CustomLog ${APACHE_LOG_DIR}/subdomain_access.log combined<br></virtualhost> -
%1表示 Host 头中第一个点号前的部分(即二级域名),a.example.com → /var/www/a;%2是第二段,一般不用 - 务必保留
ServerName example.com和ServerAlias *.example.com共存,兼顾主站与子域
DNS 与目录准备必须同步完成
配置只是路由逻辑,实际访问还依赖外部基础和文件系统就绪:
-
DNS 层:在域名服务商处添加 A 记录:
主机名填*,记录值填服务器公网 IP,等待全球生效(可用dig a.test.example.com验证) -
目录结构:手动创建对应目录并设好权限,例如:
sudo mkdir -p /var/www/a /var/www/bsudo chown -R $USER:www-data /var/www/*sudo chmod -R 755 /var/www/*
每个目录下至少放一个index.html,否则返回 403 或 404 - 若想子域名不存在时 fallback 到默认页,可加
DirectoryIndex index.html default.html,或用RedirectMatch 404 ^/$配合错误页处理
常见问题快速排查
遇到无法访问或 403/404,优先检查这三项:
-
ls -ld /var/www/a—— 确认目录存在、属组为www-data(或运行 Apache 的用户)、有执行权限(x对目录必需) -
apache2ctl -S—— 查看是否成功加载该VirtualHost,且*.example.com出现在 ServerAlias 列表中 -
curl -H "Host: a.example.com" http://127.0.0.1—— 绕过 DNS 直接测试本地配置是否生效










