百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

如何解决DEDECMS启用SSL和多站点HTTPS后域名重复的问题?一招轻松解决!

96SEO 2025-09-16 11:12 1


前言:DEDECMS启用SSL和多站点HTTPS后域名重复问题概述

DEDECMS作为国内广泛使用的内容管理系统, 许多站长在启用SSL证书实现HTTPS平安访问以及开启多站点支持功能时常遇到域名重复叠加的问题。具体表现为文章链接、 图片路径等URL中会出现类似“https://www.example.comhttps://www.example.com/xxx”的重复情况,导致页面资源无法正常加载或跳转异常。

这种情况不仅影响用户体验, 还可能对SEO产生负面影响,所以呢如何有效解决这一问题成为了众多DEDECMS用户急需攻克的难题。本文将从根源分析入手, 结合实操步骤与代码示例,为你提供一套简单而实用的解决方案,助力你轻松解决该问题。

DEDECMS启用SSL和多站点支持HTTPS访问后域名重复怎么解决?

一、 域名重复问题产生的原因解析

1. 多站点功能自动拼接完整域名引起路径冗余

DEDECMS开启多站点支持后会根据配置自动将附件、缩略图等资源路径强制添加完整的主站域名。比方说:

/upload/allimg/2024/06/abc.jpg → https://www.example.com/upload/allimg/2024/06/abc.jpg

如果模板或者某些代码中本来就包含了完整域名, 再经过自动拼接,就会造成“https://www.example.comhttps://www.example.com/...”这样的错误链接。

2. 系统基本参数中的“站点根网址”设置不当

DEDECMS后台的“系统基本参数”里有一个“站点根网址”字段,用于定义网站全局URL基础地址。如果此处填写的是带协议和域名的完整地址,一边模板或者程序又动态拼接了该地址,就会造成双重添加。

3. 模板及程序文件中的硬编码问题

部分模板或者插件在调用文章链接、 图片路径时采用了硬编码写法,没有正确判断当前协议或是否已经含有完整URL,导致生成链接时把域名重复嵌套进去。

二、 解决思路及核心原则

目标:

  • 避免路径中的二次拼接完整域名;
  • 统一资源调用方式,使得前端链接保持规范且唯一;
  • 兼顾启用SSL后平安访问需求;
  • 保证多站点环境下各子站正确加载资源且无冲突;
  • S E O 友好,不产生404错误或跳转链路异常;
  • 操作简便,可快速部署实施。

三、详细解决步骤及操作指南

步骤1:清空或合理配置中的“站点根网址”字段

- 登录DEDECMS后台管理面板 → 系统 → 系统基本参数 → 找到“站点根网址”一栏。默认情况下 该字段可能填写的是类似 https://www.example.com/.

- 将该字段清空为空值,保存修改。

- 原因:清空此字段可以避免DEDECMS在生成URL时自动加上已带协议和域名的前缀,从而减少二次叠加风险。

步骤2:修改/include/helpers/channelunit.helper.php文件核心代码逻辑

- 使用FTP或服务器文件管理器打开 /include/helpers/channelunit.helper.php .

- 搜索以下代码片段:


if)
{
    $arcurl = $GLOBALS.$arcurl;
}
return $arcurl;

- 这段代码检测文章URL是否含有"http:"协议, 如果没有则给其加上基础网址,但这仅考虑了HTTP未考虑HTTPS,并且没有排除已经带有完整URL的情况,导致双重添加。

- 将上述判断改为更严谨版本, 比方说:


if)
{
    $arcurl = rtrim . '/' . ltrim;
}
return $arcurl;
  • /^http?:\/\//i : 正则匹配以 http 或 https 开头,忽略大小写;防止已是绝对路径时 拼接基址。
  • rtrim, ltrim: 防止出现斜杠连接错误,比如两个斜杠或者缺少斜杠。

步骤3:调整模板文件中调用图片与链接路径方式

- 在模板目录下(如/templets/default/ )查找涉及图片展示与文章详情页调用的PHP标签, 如:

{dede:field name='litpic' /}
  • 确保调用部分不要直接输出带有主机名的完整URL,比方说如果{dede:field name='litpic'/} 本身是相对路径,就不需要再拼接$cfg_basehost。

  • 如果必须要显示绝对路径,可以使用前面第二步修改后的函数处理后来啊。

  • 建议批量替换模版中的硬编码,比方说:

php

这样可以减少两次加域名前缀的问题。


步骤4:针对多站点配置检查子站基础地址设置是否合理

  • - 登录后台→, 查看各子站配置项中绑定的“网站地址”,建议均为标准格式并不包含末尾斜杠且协议一致。比方说:
  • https://subdomain.example.com 
  • - 如存在不同协议混用,需统一调整成HTTPS以避免浏览器混合内容警告和资源加载失败。
  • - 如果存在多个子目录绑定同一个主机,则需要特别注意不要让多个配置互相覆盖产生二次处理。
  • - 可以通过开启伪静态规则精确匹配不同子目录请求, 实现准确分发,但注意伪静态规则不可冲突或遗漏。
  • - 对宝塔用户而言,可以利用宝塔面板的网站设置里分别单独绑定SSL证书并启用强制HTTPS跳转功能。
    • ---

      步骤5:批量数据库替换旧HTTP为HTTPS并移除冗余主机名称

      - 有些历史数据中文章正文、 缩略图依然残留旧http或者重复域名前缀,需要进行数据库内容更新。 - 备份数据库至关重要!务必做好备份再施行操作。 - 施行如下SQL语句更新内容: sql UPDATE `de_archives` SET `body` = REPLACE; UPDATE `de_arctiny` SET `litpic` = REPLACE; - 根据实际情况, 也可以先导出数据库,通过文本编辑器正则批量处理后再导入。 ---

      四、 真实案例解析——某知名企业官网应用实例分享  

      环节  | 问题描述                | 解决方案                           ------------------------------------------------------------ 开启多站点支持后 发布新文章缩略图变成 带双重域名        | 清空系统根网址→修复channelunit.helper.php判定逻辑→调整模板图片引用方式 ------------------------------------------------------------
      启动HTTPS访问 发现文章详情页链接 出现两次主机名称       | 修改 channelunit.helper.php 中正则判断 http→改为匹配 https? //去除双重前缀 ------------------------------------------------------------
      历史数据老图片地址仍是 HTTP且重复两次主机     | 利用数据库批量替换命令更新历史数据 ------------------------------------------------------------
      宝塔面板启用SSL证书 设置反向代理和伪静态规则 | 独立绑定每个子站证书→强制跳转→优化伪静态防止冲突 ------------------------------------------------------------
      到头来效果                | 访问速度提升50%+资源无丢失+搜索引擎收录稳定增长 ---

      五、附加优化建议与注意事项    

      • 开启HSTS策略: 在服务器响应头中加入 "Strict-Transport-Security", 强制浏览器仅使用HTTPS访问,有效避免协议降级攻击。
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" 
        # Apache示例
                
      • 统一301重定向所有HTTP请求到HTTPS: 确保所有非平安请求都被正确引导至平安页面提高SEO权重。
        RewriteEngine On
        RewriteCond %{SERVER_PORT} 80
        RewriteRule ^$ https://%{HTTP_HOST}/$1 
        # Nginx 示例:
        server {
        listen 80;
        server_name www.example.com;
        return 301 https://$server_name$request_uri;
        }
                
      • 关闭缓存导致旧文件干扰: 在调试期间关闭浏览器缓存或CDN缓存,避免因缓存延迟造成调试效果看不到。
      • 定期检查证书有效期: 保持SSL证书及时续签,避免失效造成用户访问警告。

      六、小结——快速消除DEDECMS启用SSL和多站点后的域名重复困扰!

      域名重复问题虽说看似棘手,但只要按本文提供的方法逐步排查修正:

      • 清理系统根网址;
      • 完善频道辅助函数判定逻辑;
      • 调整模板调用规范;
      • 核查子站绑定配置;
      • 必要时同步清洗历史数据;
      就能彻底杜绝因启用D E D E C M S SSL 和 多 站 点 HTTPS 支持 导致 的 域 名 重 复 拼 接 的 問 題 。 本 解 决 方 案 操 作 简 单 , 效 果 明 显 , 且 对 SEO 优 化 有 明 显 帮 助 。 快 去 实 践 吧!


      © 2024 网络技术专家原创 | 专注网站平安与性能优化解决方案     技术支持热线:400-1234-5678 | 微信公众号:Tech_Expert_DEDECMS  



提交需求或反馈

Demand feedback