在宝塔面板(BT Panel)中配置多个子域名指向不同的网站项目,核心逻辑是:先创建网站并绑定主域名,再为每个子域名单独创建“网站”或“重定向”。宝塔的机制是每个“网站”对应一个独立的目录和域名,因此最规范的做法是为每个子域名创建一个独立的网站记录。
以下是详细的操作步骤:
前置准备
确保你的域名解析已生效。你需要在域名的 DNS 服务商处(如阿里云、腾讯云、Cloudflare 等),将需要使用的子域名(例如 a.example.com、b.example.com)添加 A 记录,指向你服务器的公网 IP 地址。
方法一:标准配置(推荐)
适用于每个子域名都需要独立运行不同代码库的情况(例如:blog.site.com 跑 WordPress,api.site.com 跑 Node.js)。
1. 创建第一个子域名网站
假设你要配置 app1.example.com 指向 /www/wwwroot/app1_project。
- 登录宝塔面板,进入左侧菜单 【网站】。
- 点击顶部的 【添加站点】 按钮。
- 在弹出的窗口中:
- 域名:输入
app1.example.com。 - 根目录:系统会自动生成,你可以手动修改为你存放该项目的文件夹路径(例如
/www/wwwroot/app1_project)。 - 数据库/PHP版本:根据项目需求选择(如果不需要数据库可跳过)。
- 域名:输入
- 点击 【提交】。此时宝塔会自动为该域名生成 Nginx/Apache 配置文件。
2. 创建第二个子域名网站
重复上述步骤,配置 app2.example.com。
- 再次点击 【添加站点】。
- 域名:输入
app2.example.com。 - 根目录:指向另一个项目文件夹(例如
/www/wwwroot/app2_project)。 - 点击 【提交】。
注意:在宝塔中,每个“网站”条目都是独立的。只要你在 DNS 中将子域名解析到了服务器 IP,宝塔就会根据域名匹配到对应的网站配置和目录。
方法二:使用“重定向”或“别名”(特定场景)
如果你希望 www.example.com 和 example.com 同时指向同一个项目,或者需要将旧子域名跳转到新子域名,可以使用此方法。但如果是完全独立的项目,请直接使用方法一。
- 别名(Alias):仅在 Nginx 层面增加一个域名映射,根目录不变。适合做域名跳转或负载均衡,不适合部署不同代码。
- 重定向:将访问 A 域名的请求强制跳转到 B 域名。
验证与测试
完成配置后,请执行以下检查:
-
检查 DNS 解析:
在本地电脑打开命令行(CMD 或 Terminal),输入ping app1.example.com和ping app2.example.com,确认它们都解析到了你的服务器 IP。- 提示:DNS 生效可能需要几分钟到几小时,如果 ping 不通,请稍后再试。
-
检查宝塔网站状态:
回到宝塔【网站】列表,确保两个子域名的状态显示为 “开启”,且右下角没有报错图标。 -
浏览器访问测试:
分别在浏览器中输入http://app1.example.com和http://app2.example.com。- 如果看到不同的页面内容,说明配置成功。
- 如果都跳到同一个页面,请检查是否误用了“别名”功能,或者根目录设置错误。
常见问题排查
-
问题:访问提示 "404 Not Found" 或 "502 Bad Gateway"
- 原因:通常是因为网站根目录中没有
index.php或index.html文件,或者 PHP 版本选择不正确导致无法运行。 - 解决:检查对应目录是否有入口文件;在宝塔【网站】->【设置】->【PHP版本】中确认是否选对了版本(如 PHP7.4, PHP8.1 等)。
- 原因:通常是因为网站根目录中没有
-
问题:HTTPS 证书无法申请
- 解决:在宝塔【网站】列表中,点击该子域名对应的 【SSL】 按钮,选择 Let’s Encrypt,勾选该子域名进行免费申请即可。宝塔支持为多个子域名分别申请证书。
通过上述步骤,你就可以轻松地在宝塔面板上管理任意数量的子域名及其对应的独立项目了。
云小栈