最近在做站时,由于启用了HTTPS,绝对地址的时候,结果缩率图出现错误,不显示,查看代码得知,域名重复复制了!
一般会出现(https+http)重复
例如:https://www.eruiyi.cnhttp://www.eruiyi.cn
问题出现的前提条件是在织梦的缩略图图片地址启用了图床,通过外链显示图片的前提!
如图所示,站长在对某一站启用全站https后发现,在我使用图床(七牛云)时,最初七牛的域名使用的是http://二级域名,全站的缩略图都通过http://二级域名/.jpg的方式呈现!
于是浏览器虽然能通过https正常范围站点,可是那个不是全绿色的https 看着就是那么难受!
那我们就全站启用https,于是七牛云绑定的二级域名也启用了https,这下问题来了!
二级域名为启用https前,网站一切正常! 启用后发现所有的缩率图src地址都变成了图片所示
查看了织梦程序文件,发现了BUG所在!由于织梦设计时未考虑过https,所以程序中只对http头进行了判断!忽略了https
针对站长在做的这个站,有三个地方出现缩略图错误显示
1、首页通过:dede:arclist标签调用的列表
2、列表页通过:dede:list标签调用的列表
3、内容页通过:dede:likearticle标签调用的相关内容
发现问题,我们就去找到三个表格所对应的类文件夹!
dede:list对应的 arc.listview.class.php(路径include/)
打开此文件,找到如下代码
if(!preg_match("/^http:///i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
{
$row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];
}
将代码修改为:
if(!preg_match("/^(http:|https:)///i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
{
$row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];
}
其实就是在正则表达式中增加了一个https头的判断!
接着修改 include/taglib/arclist.lib.php 与 include/taglib/likearticle.lib.php两个文件
代码同上,全部修改完后,重新生成网站!试试看! 是否成功!
织梦dedecms如何批量替换图片路径 批量修改图片路径
用phpmyadmin查看数据库里的图片地址,
如果你做过二次开发或者修改过为绝对地址
数据库图片地址也重复,或者http开头要批量更换成https
方法如下
许多站长都会遇到更换站点文件目录或者空间域名(包括从本地环境上传服务器)的情况,常常导致dedecms图片和缩略图不能够正常显示。 从而影响dede的正常使用,于是有必要批量替换图片路径。
但是如果要一个一个更换图片的路径url,工作量将是巨大的。 这里介绍一种批量替换dede图片路径的方法: 使用数据库操作, 但在这之前请备份数据库!!!!!!!!
DEDE的文章缩略图在dede_archives表,字段是litpic; 内容里的图片在dede_addonarticle表,字段body; 图片集里面的图片在dede_addonimages表,字段imgurls以及body。
1.1 SQL命令行工具
1.2 数据库内容替换
2、文章内容的图片
update `表名` set `字段` = replace (字段, '旧域名' , '新域名' ); 例如: update `dede_addonarticle` set `body` = replace (body, 'http://www.eruiyi.cn/uploads' , '/uploads' );
2.2 数据库内容替换
数据无价 恢复不易 请备份数据库!
如果你做过二次开发
修改文件include/arc.archives.class.php文件
if(!preg_match("#^http//#i", $this->Fields['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
修改为
if(!preg_match("#^(http|https)://#i", $this->Fields['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
extend.func.php二次开发拓展文档
里面的
http更换为https
参数里面
preg_match("#^http//#i"
改为
preg_match("#^(http|https)://#i"
发表评论 取消回复