Drupal 中 HTML 链接被双重转义导致渲染异常的解决方案

14次阅读

Drupal 中 HTML 链接被双重转义导致渲染异常的解决方案

drupal 节点在前台渲染时出现 url 被错误转义(如 `https://www.php.cn/link/7783d3eb0cca3f309457d77f15de32e4“&gt`),根本原因是输入格式中启用了“convert urls into links”过滤器,导致已存在的 html `` 标签被二次处理。禁用该过滤器即可修复。

在 Drupal(尤其是 Drupal 7 及兼容输入过滤机制的版本)中,当您在后台富文本编辑器中手动编写包含完整 html 的内容(例如

CLICK TO WATCH

)时,系统本应原样输出该标记。但若所选输入格式(如 Filtered HTMLFull HTML)启用了 “Convert URLs into links” 过滤器,Drupal 会主动扫描纯文本中的 URL(如 https://www.php.cn/link/7783d3eb0cca3f309457d77f15de32e4),并尝试将其包裹为 标签——即使它已被嵌套在已有 标签内。结果就是 URL 被 HTML 实体编码两次,最终渲染为类似:

CLICK TO WATCH

这不仅破坏链接功能,还导致页面结构错乱。

解决步骤如下:

  1. 进入管理后台:Administer → Configuration → Content authoring → Text formats and editors(Drupal 8/9/10 路径);或旧版路径 Administer → Site configuration → input formats(Drupal 7)。
  2. 找到当前节点使用的输入格式(如 Filtered HTML),点击右侧 “Configure”
  3. 在过滤器列表中,找到 “Convert URLs into links”(对应机器名通常为 filter_url),取消勾选启用状态
  4. 滚动到底部,点击 “Save configuration”
  5. 清除所有缓存(推荐执行 drush cr 或通过管理界面清空“Performance”缓存)。

⚠️ 注意事项:

立即学习前端免费学习笔记(深入)”;

  • 此过滤器仅对纯文本 URL 生效;若内容已含合法 标签,应禁用该过滤器以避免冲突。
  • 若需保留自动链接功能(如用户评论中输入 https://example.com 自动变链接),建议为不同用途创建独立输入格式(如 Editor HTML 用于管理员、Safe Text 用于用户),并在对应场景中差异化配置。
  • 禁用后,请务必测试现有内容是否正常渲染,并检查其他依赖该过滤器的字段(如摘要、评论)是否仍满足业务需求。

? 总结:Drupal 的输入格式过滤器链是强大但需谨慎配置的机制。“Convert URLs into links” 与手写 HTML 不兼容,属于典型「功能重叠导致副作用」问题。精准控制过滤器启停,是保障前端输出可信、可控的关键实践。

text=ZqhQzanResources