Hilfe bei der Weiterleitung nach Änderung der Domain meines Discourse-Forums

Nachdem ich mein Discourse-Forum auf eine neue Instanz und URL verschoben habe, benötige ich Hilfe bei der Einrichtung der Domain-Weiterleitung.

Ich möchte, dass Links von der alten Domain zur neuen Domain weitergeleitet werden. Zum Beispiel soll ein Link wie https://olddomain.com/t/topic/89520 zu https://newdomain.com/t/topic/89520 weitergeleitet werden.

Ich habe von der Verwendung einer 301-Weiterleitung gehört, aber ich habe Schwierigkeiten, das Nginx-Konfigurationsverzeichnis auf meinem Server zu finden. Jede alternative Lösung oder Anleitung wäre sehr willkommen.

Hallo @Anirudh_Dutta_Gupta :wave: Willkommen bei Meta :slight_smile:

Hast du dieses Thema schon gesehen:

Vielen Dank, @Lilly. Ich möchte wissen, ob Permalinks auch eine vollständige Domain-Änderung bewältigen können. Nur zur Klarstellung: Wir wechseln von abc.domain1.com zu xyz.domain2.com. Sowohl die Subdomain als auch die Domain ändern sich. Ich habe diese Diskussion gelesen und wollte bestätigen:

Versuchen Sie, ein bestehendes Discourse-Thema auf eine externe URL umzuleiten? Dafür sind Permalinks nicht ausgelegt. Ich bin ziemlich sicher, dass Sie nichts unter /t umleiten können.
Wenn Sie möchten, dass Personen, die https://hoidap.cheng.vn/t/cach-cua-do-nu-bao-binh-don-gian/70 2 besuchen, zu https://cunghoangdao.info umgeleitet werden, dann ist es meiner Meinung nach am besten, den Beitrag zu bearbeiten und den Leuten zu sagen, sie sollen auf den Link klicken, um zur anderen Website zu gelangen.

Sie richten also Folgendes ein:

Danke @RGJ. Wie gehe ich mit der generischen Weiterleitung um? Sowohl das aktuelle als auch das vorherige Forum laufen auf Discourse.

Angenommen, Sie werden das aktuelle Forum entfernen, es handelt sich lediglich um eine normale Apache- oder nginx-Umleitung.

Für nginx

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

oder Apache

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

Ich hatte den Teil übersehen, dass Sie nur Discourse verschieben und nicht migrieren. Da Sie nur Domains verschieben, benötigen Sie keine Permalien-Umleitungen.

Das habe ich mir ursprünglich auch gedacht, aber ich kann den nginx-Ordner nirgends im /etc-Verzeichnis finden. Schaue ich an der falschen Stelle?

Das liegt daran, dass dort derzeit eine Discourse-Installation läuft, die nginx im Container hat.

Am einfachsten wäre es, den alten Hostnamen auf die neue Instanz zu verweisen und die Weiterleitung dort zu handhaben, siehe URL rewrite for domain change in permalinks - #7 by modius

Alternativ können Sie die Discourse-Installation entfernen und nginx auf der alten Instanz einrichten.

Vielen Dank an @RGJ für die Anleitung. Ich habe einfach eine Domain-Ebene direkt von unserem Domainnamenanbieter eingerichtet, und das hat funktioniert. Die alten Links werden korrekt zu den neuen Links umgeleitet.

Hier ist die Methode, die ich für eine vollständige Umleitung nach einer Domain-Änderung verwende. Ich habe einige Lösungen aus diesem Forum kombiniert.

In der app.yml füge ich am Ende die Blöcke after_web_config und after_ssl hinzu:

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"

## Beliebige benutzerdefinierte Befehle, die nach dem Build ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn Sie die E-Mail-Adresse 'Von' für Ihre erste Registrierung festlegen möchten, kommentieren Sie die Zeile aus und ändern Sie sie:
  ## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Dies leitet die alten Links zu den neuen Foren um, ohne SSL-Probleme.