在宝塔面板中为不同子域名绑定多个网站,核心思路是:每个子域名对应一个独立的网站站点,并通过 Nginx/Apache 配置实现多站点共存。以下是具体操作步骤(以 Nginx 为例):
✅ 前提条件
- 已安装宝塔面板并登录;
- 已配置好 DNS 解析(如
a.example.com、b.example.com均指向服务器 IP); - 服务器防火墙/安全组已放行 80/443 端口;
- (可选)已申请 SSL 证书(可后续为各站点单独添加)。
🔧 操作步骤
步骤 1:创建第一个网站(主站或任意子域)
- 进入宝塔面板 → 网站 → 添加站点;
- 填写:
- 域名:
example.com(或你希望的主域名) - 根目录:
/www/wwwroot/example.com - PHP 版本:按需选择(如 PHP 7.4 / 8.1)
- 数据库:可选创建 MySQL 库(也可后期添加)
- 域名:
- 点击【提交】→ 等待创建完成。
💡 此时该站点默认通过
example.com访问。
步骤 2:为同一服务器添加第二个子域名站点(网站点)
⚠️ 注意:不要直接修改第一个站点的“附加域名”(那只是虚拟主机别名),而是新建一个完整站点,确保代码隔离、PHP 环境独立(如需)。
- 再次点击 网站 → 添加站点;
- 填写:
- 域名:
sub1.example.com - 根目录:
/www/wwwroot/sub1.example.com(建议新建独立目录) - PHP 版本:可与主站相同或不同(宝塔支持多 PHP 版本并存)
- 数据库:按需创建新库
- 域名:
- 点击【提交】。
✅ 重复此步骤添加更多子域名站点(如 sub2.example.com、blog.example.com 等)。
步骤 3:验证与测试
- 在本地 hosts 文件临时映射(或等待 DNS 生效):
你的服务器IP sub1.example.com 你的服务器IP sub2.example.com - 浏览器访问
http://sub1.example.com和http://sub2.example.com,确认各自显示对应站点的首页; - 检查宝塔「网站」列表中是否出现两个网站点条目。
🌐 高级场景处理
| 需求 | 解决方案 |
|---|---|
| 同一套代码,不同子域访问 | 使用「附加域名」功能: 进入某站点设置 → 附加域名 → 添加 sub1.example.com⚠️ 但所有子域共享同一根目录、PHP 配置、数据库 |
| 需要不同 PHP 版本 | 必须为每个子域名创建网站点(推荐做法) |
| SSL 证书批量部署 | 可在「SSL」页面为每个站点单独申请 Let’s Encrypt 证书,或上传自定义证书 |
| 反向X_X到本地服务 | 创建站点时选择「反向X_X」类型,目标填 http://localhost:8080 等 |
⚙️ 手动验证 Nginx 配置(可选)
进入 网站 → 找到对应站点 → 配置文件,查看生成的 server 块:
server {
listen 80;
server_name sub1.example.com;
root /www/wwwroot/sub1.example.com;
index index.php index.html;
# ... 其他配置
}
确保每个子域名有独立的 server_name 和 root。
❗ 常见问题
- DNS 未生效? → 检查域名服务商后台是否添加 A 记录;可用
ping sub1.example.com验证; - 404 Not Found? → 检查根目录是否存在、权限是否为
www:www; - PHP 报错? → 确认站点绑定的 PHP 版本是否正确,且代码兼容;
- 缓存问题? → 清除浏览器缓存 + 宝塔「伪静态」刷新 + 重启 Nginx。
需要我为你生成一个自动化脚本(如用 bt-cli 批量创建站点),或提供 Apache 版操作指南吗?
云小栈