我收到了 example.com 链接。它们来自哪里?

你好,

我将一个 Discourse 实例从一个主机迁移到了另一个主机,从多站点设置迁移到了使用备份导出/导入的单容器单主机设置,但部分链接仍使用了 www.example.com 而非正确的主机名。

该如何修复?

我已将 DISCOURSE_HOST 设置为对应的主机名,但似乎并未解决问题。是否有可用的 SQL 查询来查找 www.example.com 的出现位置?

1 个赞

或许可以按照更改域名或重命名我的 Discourse 中的描述进行重新映射?

我最大的猜测是,在某个环节中有东西被配置成了该主机名。不过,很难推测这究竟是如何发生的。

6 个赞

@hellekin

你可以从 Rails 控制台按如下方式快速搜索你所有站点设置中是否包含字符串 “example”:

SiteSetting.where('value LIKE ?', "%example%")

例如,在我们的 Discourse 实例上:

[1] pry(main)> SiteSetting.where('value LIKE ?', "%unix\.com%").count
=> 10

如果你想检查 REDIS,请尝试(假设你的数据容器在 app 中,请根据需要修改):

docker exec -it app redis-cli

然后,尝试类似以下的命令:

127.0.0.1:6379> KEYS *example*
(empty list or set)

另一个示例:

127.0.0.1:6379> KEYS *unix*
1) "default:_CACHE:onebox__https://www.unix.com/man-page/linux/1/df/"
2) "ANON_CACHE_text/html,application/xhtml+xml,application/signed-exchange;v=b3,application/xml;q=0.9,*/*;q=0.8_https_community.unix.com/t/passing-variables-to-awk/150198|m=true|c=true|b=true|t=|ca=|l=_count"
3) "default:_CACHE:onebox__https://www.unix.com/aix/56317-timestamp-sh_history-using-ksh-shell.html"

要快速查看所有全局设置,你可以从 Rails 控制台运行以下命令,所有全局设置都将可见(我相信肯定有更好的方法……但这很快速且有效):

[1] pry(main)> GlobalSetting.as_json

希望这能帮到你。

4 个赞

跟随 @pfaffman 的链接,我意识到自己误用了 DISCOURSE_HOST 而非 DISCOURSE_HOSTNAME

@neounix 提供的有用排查建议并未产生结果,因此我推测第一个问题导致了当前的状况。我正在重建容器以验证……

容器已重建,链接现在能显示之前损坏的图片,看来问题已解决。感谢两位!

3 个赞

@pfaffman 能否请您为 ActivityPub Support: Phase 1 RFC - #27 by hellekin 执行 rebuild HTML 以确认修复是否生效?

1 个赞

是的,在查看了代码后,这完全说得通了。Discourse 的配置在配置文件中将默认主机名设置为 "www.example.com",因此如果构建文件中存在错误(就像你描述的 @hellekin 那样),看起来你会得到默认值 :slight_smile:

也许有一天,有人会将该配置默认值改为:

hostname = "www.hostname-missing-check-yml-file.com"

:slight_smile: :slight_smile:

4 个赞

我在这里没有管理员权限。如果你想确认你的网站嵌入功能在其他网站上是否正常运行,可以在 try.discourse.org 上进行测试。

我想 hostname = "please.set.DISCOURSE_HOSTNAME.env.example" 会更明确且符合 RFC 标准。

谢谢,我已经在其他地方测试过了,只是希望更新一下这个帖子 :slight_smile:

2 个赞

按钮已按下。看起来图片已经显示出来了!

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.