网络建站知识发布于分享网站

当前位置:首页>>新闻中心>>CMS教程>>dedecms教程

DEDECMS开启SSL与多站点支持后缩略图域名重复错误的解决方法

时间:2025-03-31 19:11:30    来源:    人气:0

在使用DEDECMS进行多站点配置时,开启系统设置中的多站点支持功能是一个常见的需求。这允许我们将不同目录绑定到不同的二级域名或独立域名上,从而实现多站点的管理。然而,这一功能的启用会导致附件图片的路径从相对路径自动转换为绝对路径。例如,原本的文章图片路径 `/upload/allimg/1709/234214324.JPG` 会被替换为 `https://www.bnxb.com/upload/allimg/1709/234214324.JPG`。

尽管这一功能看似方便,但在实际使用中,我们可能会遇到一些问题。特别是在 DEDE 5.7 SP2 版本中,存在一个 BUG:文章中的图片变为绝对地址后,缩略图也会被提取为绝对地址。然而,在栏目页或首页引用这些缩略图时,由于开启了多站点支持,系统会再次在外层加上主站域名,导致缩略图路径变成类似以下形式:


https://www.bnxb.com/https://www.bnxb.com/upload/allimg/1709/234214324.JPG
    

这种情况下,缩略图将无法正常显示。虽然可以通过系统提供的“批量维护 - 数据库内容替换”功能手动移除域名部分,但这无疑增加了操作负担。为此,我们可以采取一种临时解决方法来修复这个问题。

解决方案是修改文件 `DEDE/INC/inc_archives_functions.php`。具体步骤如下:

首先,找到函数 `GetDDImgFromBody` 的原始代码:


/**
 * 取第一个图片为缩略图
 *
 * @access    public
 * @param     string  $body  文档内容
 * @return    string
 */
function GetDDImgFromBody(&$body)
{
    $litpic = '';
    preg_match_all("/(src)=[\"|'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU", $body, $img_array);
    $img_array = array_unique($img_array[2]);
    if (count($img_array) > 0)
    {
        $picname = preg_replace("/[\"|' |]{1,}/", '', $img_array[0]);
        if (preg_match("#_lit.#", $picname)) $litpic = $picname;
        else $litpic = GetDDImage('ddfirst', $picname, 1);
    }
    return $litpic;
}
    

接下来,将其修改为以下代码:


/**
 * 取第一个图片为缩略图
 *
 * @access    public
 * @param     string  $body  文档内容
 * @return    string
 */
function GetDDImgFromBody(&$body)
{
    global $cfg_basehost;
    $litpic = '';
    preg_match_all("/(src)=[\"|'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU", $body, $img_array);
    $img_array = array_unique($img_array[2]);
    if (count($img_array) > 0)
    {
        $picname = preg_replace("/[\"|' |]{1,}/", '', $img_array[0]);
        if (preg_match("#_lit.#", $picname)) $litpic = $picname;
        else $litpic = GetDDImage('ddfirst', $picname, 1);
    }
    $litpic = str_replace($cfg_basehost, "", $litpic);
    return $litpic;
}
    

新增的两行代码分别是:


global $cfg_basehost;
$litpic = str_replace($cfg_basehost, "", $litpic);
    

这两行的作用是检测缩略图路径中是否包含网站域名,并自动将其移除。通过这种方式,可以有效避免缩略图路径重复添加域名的问题,从而确保图片能够正常显示。

总结来说,当我们在 DEDECMS 中开启多站点支持功能时,需要注意可能引发的缩略图路径问题。通过上述修改,不仅可以提升用户体验,还能减少后期维护的工作量。希望这篇教程能对您有所帮助!

相关文章

  • Dedecms 删除文档时同时清除文章中图片的方法

    Dedecms 删除文档时同时清除文章中图片的方法

    在网站建设与维护的过程中,优化代码结构和功能是提升网站性能的重要步骤。本文将介绍如何通过自定义函数实现文章删除时自动清理相关资源的功能,从而提高系统的整洁性和存储效率。以下是具体的操作步骤及代码实现。首先, 在 `/include` 目录下创建一个名为 `extend.func.php` 的文件...
    2025-03-31
  • Dedecms上传图片提示302错误ERROR的解决方法

    Dedecms上传图片提示302错误ERROR的解决方法

    在进行图片上传操作时,用户可能会遇到302错误以及带有ERROR提示的图片上传失败问题。这些问题可能由多种原因引发,因此本文将对这些情况进行整理,以帮助大家更有效地定位并解决问题。 第一种情况:图片文件本身损坏。 这种情况会导致系统返回ERROR错误提示,不过发生概率较低。如果怀疑是图片损坏导致的...
    2025-03-31
  • DEDECMS模板使用教程

    DEDECMS模板使用教程

    如果您正在寻找一种高效的方法来使用Dedecms模板搭建网站或论坛,那么本文将为您提供详尽的指导。从模板解压到最终完成配置,每一步都将清晰呈现,帮助您快速掌握整个流程。 第一步:解压Dedecms模板 将下载的Dedecms模板文件解压出来,确保所有文件完整无误。如下图所示: 第二步:获取D...
    2025-03-31
  • Dedecms Dede 附加表自定义字段与主表文章关联方法

    Dedecms Dede 附加表自定义字段与主表文章关联方法

    在使用DedeCMS开发装修网站时,设计师和设计作品之间的关联是一个重要的功能需求。通常情况下,文章(作品)的内容部分存储在主表dede_addonarticle中,而自定义字段则存储在附加表dede_archives中。为了实现这一功能,可以采用以下两种方法。 ① 根据发布人调用相关文章; ...
    2025-03-31

公众号