求助:Discord未识别链接Embed,仅显示纯链接且嵌入GIF不显示
解决Discord链接不显示Embed、仅展示纯文本的问题
问题根源
你的OG元标签配置不完整,且GIF路径用了相对地址,Discord无法正确抓取并解析要展示的GIF内容,所以只显示纯文本链接。另外HTTPS跳转逻辑存在漏洞,也可能影响Discord的抓取。
具体修复方案
1. 补全核心OG标签
Discord解析Embed需要完整的OG标识,补充缺失的关键标签,并修正og:type为GIF对应的类型:
<!-- 标题,会显示在Embed上方 --> <meta property="og:title" content="别点中键!"> <!-- 你的网站完整HTTPS地址,必须和跳转目标一致 --> <meta property="og:url" content="https://yumd.42web.io"> <!-- GIF的完整HTTPS绝对路径,Discord才能抓取到图片 --> <meta property="og:image" content="https://yumd.42web.io/dont-middle-click.gif"> <!-- 明确类型为GIF,不是video.other --> <meta property="og:type" content="image.gif"> <!-- 可选:添加描述,会显示在Embed下方 --> <meta property="og:description" content="为什么要中键点击这个GIF呢?">
2. 修正GIF路径为绝对HTTPS地址
不能用相对路径dont-middle-click.gif,必须换成完整的HTTPS链接,确保Discord能直接访问到你的GIF文件。
3. 修复HTTPS跳转逻辑
原代码的str_contains判断逻辑有误,可能导致错误跳转,换成可靠的HTTPS检测方式:
<?php // 检查当前协议是否为HTTPS,不是则强制跳转 if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { $redirectUrl = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; header("Location: $redirectUrl", true, 301); exit(); } ?>
4. 刷新Discord的Embed缓存
Discord会缓存已解析的链接,修改配置后,需要强制让它重新抓取:
- 在聊天框发送链接时,在末尾添加随机参数(比如
?t=123),每次参数不同就能触发重新解析; - 或者使用Discord开发者工具的Embed调试功能重新验证链接。
5. 确认GIF可正常访问
确保你的GIF文件没有防盗链、权限限制,用浏览器直接访问GIF的绝对地址,能正常显示才算合格。
修复后的完整代码
<html lang="en"> <head> <meta property="og:title" content="别点中键!"> <meta property="og:url" content="https://yumd.42web.io"> <meta property="og:image" content="https://yumd.42web.io/dont-middle-click.gif"> <meta property="og:type" content="image.gif"> <meta property="og:description" content="为什么要中键点击这个GIF呢?"> <?php if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { $redirectUrl = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; header("Location: $redirectUrl", true, 301); exit(); } ?> </head> <body> <p>Why did you middle click the gif</p> </body> </html>
内容的提问来源于stack exchange,提问作者w01n 187395
相关产品推荐
相关产品推荐

