我的知识记录

PbootCMS后台UEditor编辑器链接自动加http问题_自定义协议支持_编辑器配置修改

PbootCMS的UEditor编辑器对非标准协议链接处理不友好,magnet、ed2k、thunder等链接保存后被加上http://前缀,导致链接不可用。根本原因是UEditor的自动链接格式化功能,它假设所有链接都是http/https开头,其他协议被当作不完整地址补全。彻底解决需要修改UEditor的链接处理逻辑。

定位UEditor的链接处理函数。打开`static/ueditor/ueditor.all.js`(未压缩版,如果只有min版就先格式化),搜索`function filterLink`或`autolink`相关代码。UEditor有个自动识别URL并转成链接的功能,还有个对已有a标签href的过滤功能,两处都可能加http前缀。

修改自动链接识别:找到判断URL正则的地方,通常是`/(https?|ftp|file)://[^s]+/`这种正则。把magnet、ed2k等协议加进去:`/(https?|ftp|file|magnet|ed2k|thunder|flashget)://?[^s]+/`。这样编辑器识别这些协议为合法链接,不会自动加前缀。

修改a标签过滤:找到处理a标签href的代码,类似`if(!/^https?:///.test(href)){href='http://'+href}`。在判断条件里加上排除magnet等协议:`if(!/^(https?|ftp|magnet|ed2k|thunder|flashget):/i.test(href) && href.indexOf(':')>0)`。或者更简单,判断href包含冒号且冒号前是字母组合,就认为是完整协议,不补全。

用未压缩版修改后,需要替换压缩版。把改好的ueditor.all.js用在线JS压缩工具压缩,替换ueditor.all.min.js。或者直接在页面引用时改用ueditor.all.js,不引用min版,改起来方便但文件大加载慢。开发调试用all.js,生产环境用min版。

PbootCMS的UEditor配置文件`ueditor.config.js`里也有相关设置。找到`'filterTxtRules'`或`'xssFilterRules'`,里面定义了允许的标签和属性。a标签的href属性如果在过滤规则里被处理,需要在白名单里加上自定义协议。不过大部分版本的问题出在all.js的处理逻辑,config.js里改效果有限。

另一种思路:不用UEditor的链接按钮,直接在HTML源码里写a标签,并且保存后不再用可视化模式编辑该链接。在PbootCMS后台,文章内容保存时系统也会做XSS过滤,检查`apps/admin/controller/content/ContentController.php`里的保存逻辑,看有没有对content字段做href处理。如果后台PHP层也加前缀,需要同时改PHP代码。

修改完测试流程:后台新建文章→插入magnet链接→保存→查看前台页面源码→确认href是原始magnet链接。如果前台正常但后台重新编辑又被改,说明是编辑器可视化模式加载时改的,需要在编辑器的内容加载过滤里也改。所有修改都备份原文件,出问题能回滚。

PbootCMS后台UEditor编辑器链接自动加http问题_自定义协议支持_编辑器配置修改

标签:

更新时间:2026-08-26 17:20:09

上一篇:如何修改公司网站图片_产品图banner图替换与图片SEO优化指南

下一篇:如何替换公司网站的图片背景:CSS背景、整页背景、区块背景与响应式