图片未加载 - 可能的HTTPS问题

你好,
我们遇到了一个问题:从 Drupal 嵌入的相对路径链接图片(格式为 <img src="/link/to/image.jpg" />)在作为主题发布到 Discourse 后无法加载。我们认为这是因为它们是通过 discourseEmbedUrl 变量使用 HTTP 链接的;但我们的服务器通过 HTTPS 提供所有内容,导致图片链接失效。如果在开发者工具中手动修改链接(例如将 HTTP 改为 HTTPS),问题即可解决。

简而言之:是否可以让 Discourse 在嵌入图片时使用 discourseUrl 变量,而不是 discourseEmbedUrl
以下是更详细的说明,解释了我们如何形成当前配置:

简言之,在我们切换到 HTTPS 之前创建的所有主题都使用了 HTTP 链接作为主题源。因此,当我们切换时,需要 discourseEmbedUrl 变量继续使用 HTTP 链接,否则会根据新的 HTTPS 主题源 URL 创建重复的 HTTPS 文章。

抱歉解释得这么长;对于此类情况,是否可以让嵌入图片使用与源 URL 不同的变量?目前我们似乎只有两个选择:

  • 对图片使用与主题源 URL 相同的 discourseEmbedUrl 变量(HTTP),但这会导致图片损坏(因为在嵌入中似乎无法通过 HTTP 正确加载)

  • discourseEmbedUrl 变量改为 HTTPS,使图片正常显示,但每当访客执行嵌入代码时,由于使用的 discourseEmbedUrl 与其对应的主题源 URL 不同,会创建重复的主题

如果需要,我可以提供更多信息,请随时告知!

1 个赞

我认为您需要修正那些主题 URL。假设两个站点现在都使用 HTTPS,您不希望有任何数据引用回不安全的对象。

5 个赞

有没有办法批量将所有 HTTP 链接更改为 HTTPS?我们有超过 8,000 篇文章……可能并非所有文章都有对应的主题,但即便如此——除非有自动化方法,否则这将是一项巨大的工程。

不过,由于服务器配置的原因,主题 URL 能够成功将访问者重定向到正确的页面,因此目前运行良好。我们遇到的唯一问题是这个图片问题。

我是否可以配置系统,使其在图片中不使用 discourseEmbedUrl,而是使用 discourseUrl(或者我可以设置为 HTTPS 链接的其他变量)?