两个域名,条件重定向

亲爱的 Discourse 专家:

我们运营一个 Discourse 论坛(DOMAIN1)已有三年。现在,我们希望扩大讨论范围并添加 DOMAIN2。多亏 这篇帖子,我们成功让两个域名都通过 Let’s Encrypt 激活了。我们将保持两个域名都处于活动状态(这在执行该帖子的第 1 步后已实现)。第二个域名会被重定向到主域名,这很好。

过渡的一部分是将所有现有分类移动到一个新的顶级分类下。

DOMAIN2 将成为主要的 Discourse 域名,而 DOMAIN1 将保持链接状态,以便外部链接到帖子的地址仍然有效。

问题是:当直接访问“原生”DOMAIN1(即仅根 URL,无路径)时,如何添加一个重定向到新的顶级分类 URL?其他带有路径的 DOMAIN1 访问应保留现有路径(无需更改,目前已正常工作)。这样做可以最大限度地减少混淆,因为所有访问 DOMAIN1 的用户都会进入该分类,整体体验与之前保持一致。

希望有人能就如何在双域名设置下实现这种条件重定向提出建议。

谢谢!
Merten

1 个赞

您将面临困难:单个 Discourse 实例无法在多个 URL 下运行;且对于现有路由(如主题查看),固定链接重定向功能无法生效。

4 个赞

你的意思是,没有简单的方法实现以下操作吗?

(1) 访问 domain1.com,它运行着 Discourse(主主机名为 domain1.com - 已生效)
(2) 访问 domain2.com,它跳转到 domain1.com/c/example/18(这也是我们想要的)
(3) 访问 domain2.com/t/topic/1,它显示 domain1.com/t/topic/1domain2.com/t/topic/1(当前已生效)

我们正在进行过渡,希望仅将 domain2.com 的根路径重定向到一个分类。是否有某种 URL 重写可以实现这一点?

1 个赞

如果 domain2 提供重定向规则,那么是的,您可以编写 nginx 配置来实现;具体细节不在 Meta 的讨论范围内。

2 个赞

站点地图插件 能否作为 nginx 302 重定向 的原始数据?

1 个赞

我们通过向 web.ssl.template.yml 文件添加以下内容使其正常工作:

if ($host = domain2.com) {
    rewrite ^/$ /c/example/18 permanent;
}
2 个赞

请将该内容移至您的 app.yml 中的 replace 指令,否则未来的升级将会给您带来麻烦!

3 个赞

好的,非常感谢!!!

1 个赞