求助:更改 Discourse Forum 域名后的重定向问题

将我的 Discourse 论坛迁移到新的实例和 URL 后,我需要有关设置域名重定向的帮助。

我希望旧域名的链接重定向到新域名。例如,像 https://olddomain.com/t/topic/89520 这样的链接应重定向到 https://newdomain.com/t/topic/89520。

我听说过使用 301 重定向,但我很难在服务器上找到 Nginx 配置文件目录。任何替代解决方案或指导都将不胜感激。

1 个赞

您好 @Anirudh_Gupta :wave: 欢迎来到 Meta :slight_smile:

您是否已经看过这个话题:

谢谢 @Lilly。我想知道永久链接是否也能处理完整的域名更改。需要说明的是,我们将从 abc.domain1.com 迁移到 xyz.domain2.com。子域名和域名都会更改。我一直在阅读这个讨论,想确认一下:

您是想将现有的 Discourse 主题重定向到外部 URL 吗?永久链接并非为此设计。我确信您无法重定向 /t 下的任何内容。
如果您希望访问 https://hoidap.cheng.vn/t/cach-cua-do-nu-bao-binh-don-gian/70 2 的用户重定向到 https://cunghoangdao.info,我认为您最好的办法是编辑帖子,告诉用户点击链接前往其他网站。

1 个赞

您设置了:

3 个赞

谢谢 @RGJ。我该如何处理通用重定向?当前和之前的论坛都在 Discourse 上。

1 个赞

假设您将删除当前论坛,这只是一个普通的 Apache 或 nginx 重定向。

对于 nginx

server {
    server_name original.example.com;
    location / {
        rewrite ^/(.*)$ https://new.example.com/$1 permanent;
    }
}

或 Apache

RewriteEngine On
RewriteRule ^(.*)$ https://new.example.com/$1 [R=301,L]

我错过了您只移动 Discourse 而不是迁移的部分。由于您只移动域名,因此不需要永久链接重定向。

2 个赞

我最初也是这么想的,但在 /etc 目录里找不到 nginx 文件夹。是我找错地方了吗?

那是因为那里目前有一个 Discourse 安装,它在容器中有 nginx。

最简单的办法是将旧主机名指向新实例,并在那里处理重定向,请参阅 URL rewrite for domain change in permalinks - #7 by modius

或者,移除 Discourse 安装并在旧实例上设置 nginx。

1 个赞

感谢 @RGJ 的指导。我最终直接从域名提供商那里设置了域名级别的操作,这样就可以了。旧链接已正确重定向到新链接。

4 个赞

这是我用于域名更改后进行完全重定向的方法,我混合了在此论坛上提供的一些解决方案。

在 app.yml 中,最后我添加了 after_web_config 和 after_ssl 块:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

  after_web_config:
    - replace:
        filename: /etc/nginx/nginx.conf
        from: /sendfile.+on;/
        to: |
          server_names_hash_bucket_size 64;
          sendfile on;
    - file:
        path: /etc/nginx/conf.d/discourse_redirect_1.conf
        contents: |
          server {
            listen 80;
            listen 443 ssl;
            server_name old-domain.com;
            return 301 $scheme://new-domain.com$request_uri;
          }
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d old-domain.com --keylength"

## 任何在构建后运行的自定义命令
run:
  - exec: echo "Beginning of custom commands"
  ## 如果您想设置第一次注册的“发件人”电子邮件地址,请取消注释并更改:
  ## 在收到第一封注册电子邮件后,重新注释该行。它只需要运行一次。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

它将把旧链接重定向到新论坛,而不会出现 SSL 问题。

4 个赞

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