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