
drupal 节点在前台渲染时出现 url 被错误转义(如 `https://www.php.cn/link/7783d3eb0cca3f309457d77f15de32e4">`),根本原因是输入格式中启用了“convert urls into links”过滤器,导致已存在的 html `` 标签被二次处理。禁用该过滤器即可修复。
在 Drupal(尤其是 Drupal 7 及兼容输入过滤机制的版本)中,当您在后台富文本编辑器中手动编写包含完整 HTML 的内容(例如
)时,系统本应原样输出该标记。但若所选输入格式(如 Filtered HTML 或 Full HTML)启用了 “Convert URLs into links” 过滤器,Drupal 会主动扫描纯文本中的 URL(如 https://www.php.cn/link/7783d3eb0cca3f309457d77f15de32e4),并尝试将其包裹为 标签——即使它已被嵌套在已有 标签内。结果就是 URL 被 HTML 实体编码两次,最终渲染为类似:这不仅破坏链接功能,还导致页面结构错乱。
✅ 解决步骤如下:
- 进入管理后台:Administer → Configuration → Content authoring → Text formats and editors(Drupal 8/9/10 路径);或旧版路径 Administer → Site configuration → Input formats(Drupal 7)。
- 找到当前节点使用的输入格式(如 Filtered HTML),点击右侧 “Configure”。
- 在过滤器列表中,找到 “Convert URLs into links”(对应机器名通常为 filter_url),取消勾选启用状态。
- 滚动到底部,点击 “Save configuration”。
- 清除所有缓存(推荐执行 drush cr 或通过管理界面清空“Performance”缓存)。
⚠️ 注意事项:
立即学习“前端免费学习笔记(深入)”;
- 此过滤器仅对纯文本 URL 生效;若内容已含合法 标签,应禁用该过滤器以避免冲突。
- 若需保留自动链接功能(如用户评论中输入 https://example.com 自动变链接),建议为不同用途创建独立输入格式(如 Editor HTML 用于管理员、Safe Text 用于用户),并在对应场景中差异化配置。
- 禁用后,请务必测试现有内容是否正常渲染,并检查其他依赖该过滤器的字段(如摘要、评论)是否仍满足业务需求。
? 总结:Drupal 的输入格式过滤器链是强大但需谨慎配置的机制。“Convert URLs into links” 与手写 HTML 不兼容,属于典型「功能重叠导致副作用」问题。精准控制过滤器启停,是保障前端输出可信、可控的关键实践。











