跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何为宝塔面板的网站绑定多个独立域名_在网站设置中添加附加域名

附加域名不生效主因是未配置证书却启用“强制HTTPS”、伪静态规则冲突或HTTP混合资源。须为每个附加域名单独部署SSL证书、关闭强制HTTPS、检查Nginx server_name与重写规则,并确保资源链接使用HTTPS或相对协议。 附加域名不生效,检查是否勾选了「强制 HTTPS」 宝塔面板在启用 SSL 后默认开启「强制 HTTPS」,但附加域名若未单独配置证书,访问时会因证书不匹配被浏览器拦截或跳转失败。此时页面可能空白、报
ERR_SSL_PROTOCOL_ERROR
,或直接 301 跳到主域名的 HTTPS 地址。 实操建议: 进入网站 → 「域名管理」→ 点击「添加附加域名」,填入新域名(如
www.example2.com
) 添加后立即进入「SSL」选项卡 → 确认该附加域名已申请或部署有效证书;未配置证书前,**务必取消勾选「强制 HTTPS」** 若需全站 HTTPS,必须为每个附加域名单独申请证书(支持泛域名或多个 SAN),不能复用主域名证书 修改后点击「保存」,再执行
bt reload
或重启 Nginx/Apache(面板右上角「重启」按钮即可) 附加域名解析正常但 404,确认根目录与伪静态未被主站规则覆盖 宝塔不会为附加域名自动创建独立根目录,它默认共用主域名的
root
配置。如果主站用了 ThinkPHP/Laravel 等框架的伪静态规则,而附加域名实际指向不同项目,就容易因重写规则误匹配导致 404。 实操建议: 检查 Nginx 配置文件(路径:
/www/server/panel/vhost/nginx/你的站点.conf
),确认附加域名是否出现在
server_name
行中,例如:
server_name www.example.com www.example2.com;
避免在「网站设置 → 伪静态」里填写全局规则;如需差异化处理,应手动编辑配置,在对应
server
块内加
location
分支,或用
if ($host ~* "example2\.com") { ... }
做条件路由 若附加域名需完全独立项目,建议不走「附加域名」,而新建一个网站,绑定该域名并指定独立根目录——更清晰、少冲突 HTTPS 下混合资源警告(Mixed Content),检查网页中硬编码的 HTTP 链接 即使附加域名已配好证书且能 HTTPS 访问,页面里仍可能出现图标不显示、JS 加载失败等问题,浏览器控制台提示
Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure script 'http://...'
。 实操建议: 附加域名和主域名共用同一套前端代码时,检查 HTML 源码中是否有写死的
http://
协议链接(如图片、CSS、API 请求) 将协议头改为相对协议:
//cdn.example.com/js/app.js
,或使用
https://
显式声明 PHP 后端可通过
$_SERVER['HTTPS'] === 'on'
$_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'
判断当前协议,动态生成资源 URL Nginx 层也可用
sub_filter
替换响应体中的
http://
,但仅作临时补救,不推荐长期依赖 子域名与主域名共存时,注意通配符证书与 DNS 解析层级 比如主站是
example.com
,想把
blog.example.com
作为附加域名加进去——这在技术上可行,但容易混淆:宝塔的「附加域名」本质是同级域名别名,不是子站点管理逻辑。真正需要子域名隔离时,应走「子目录绑定」或「新增网站」流程。 实操建议:
blog.example.com
若只是内容分流,且与主站共享数据库和用户体系,可用附加域名 + 条件路由实现;但若结构差异大,优先建新网站 通配符证书(
*.example.com
)可覆盖所有一级子域名,但无法用于
www.example.com
example.com
同时存在的情况(需额外 SAN) DNS 解析必须确保所有附加域名都指向服务器 IP,且 TTL 不宜过高(调试期设为 60 秒),避免本地缓存导致验证失败 附加域名看着简单,但实际卡点往往不在面板操作本身,而在证书边界、重写规则继承、协议一致性这些隐性耦合上。尤其是多团队共用一个宝塔实例时,谁动了主站伪静态,谁删了旧证书,都可能让某个附加域名突然失联——查的时候得从浏览器地址栏开始,一路往下抠 Nginx 日志、证书有效期、响应头里的
Location
字段。

相关文章