Discourse 포럼 도메인을 변경한 후 리디렉션 설정이 필요합니다

Discourse 포럼을 새 인스턴스와 URL로 이전한 후, 도메인 리다이렉트 설정에 도움이 필요합니다.

기존 도메인에서 새 도메인으로 링크가 리다이렉트되기를 원합니다. 예를 들어, https://olddomain.com/t/topic/89520과 같은 링크가 Parked at Loopia 리다이렉트되어야 합니다.

301 리다이렉트를 사용한다는 이야기를 들었지만, 서버에서 Nginx 설정 디렉토리를 찾는 데 어려움을 겪고 있습니다. 대안적인 솔루션이나 조언을 주시면 감사하겠습니다.

안녕하세요 @Anirudh_Dutta_Gupta :wave: 메타에 오신 것을 환영합니다 :slight_smile:

아래 주제를 확인해 보셨나요:

@Lilly 감사합니다. 영구링크(permalinks)가 전체 도메인 변경도 처리할 수 있는지 알고 싶습니다. 명확히 하자면, 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 로 리디렉션되기를 원한다면, 게시물을 편집하여 다른 사이트로 이동하려면 링크를 클릭하라고 안내하는 것이 최선의 방법이라고 생각합니다.

즉, 다음을 설정하는 것입니다.

@RGJ님, 감사합니다. 일반 리디렉트는 어떻게 진행하면 될까요? 현재 포럼과 이전 포럼 모두 Discourse를 사용하고 있습니다.

현재 포럼을 제거할 예정이라면, 이는 일반적인 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만 이전하고 마이그레이션을 하지 않는다는 부분을 놓치고 있었습니다. 도메인만 이전하는 것이므로, 영구 링크 리다이렉트는 필요하지 않습니다.

처음에는 그렇게 생각했는데, /etc 디렉터리 어디에서도 nginx 폴더를 찾을 수 없어요. 잘못된 곳을 보고 있는 건가요?

현재 해당 위치에 Discourse가 설치되어 있으며, 컨테이너 내에 nginx가 있기 때문입니다.

가장 쉬운 방법은 기존 호스트명을 새 인스턴스로 가리키고,那里的에서 리다이렉션을 처리하는 것입니다. 참고: URL rewrite for domain change in permalinks - #7 by modius

또는 Discourse 설치를 제거하고 기존 인스턴스에 nginx를 설정할 수도 있습니다.

@RGJ 님, 조언해 주셔서 감사합니다. 결국 도메인 등록업체에서 도메인 레벨의 직접 연결을 설정했는데, 이렇게 하면 잘 작동했습니다. 기존 링크가 새 링크로 올바르게 리다이렉트되고 있습니다.

도메인 변경 후 완전한 리디렉션을 위해 제가 사용하는 방법을 공유합니다. 이 포럼에서 제안된 몇 가지 해결책을 혼합하여 사용했습니다.

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"
  ## 첫 번째 가입 시 'From' 이메일 주소를 설정하려면 아래 주석을 해제하고 수정하세요:
  ## 첫 가입 이메일을 받은 후 해당 줄에 다시 주석을 걸어야 합니다. 한 번만 실행하면 됩니다.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

이렇게 하면 SSL 문제 없이 기존 링크가 새 포럼으로 리디렉션됩니다.