Wie kann ich dynamische Weiterleitungen verwenden?

Ich migriere von Vanilla zu Discourse und wir haben uns entschieden, komplett neu zu starten, anstatt 8 Jahre an Themen zu importieren. Die aktuelle Seite ist forums.29th.org, daher habe ich vor, sobald Discourse vollständig läuft, discourse auf forums.29th.org zu setzen und Vanilla auf etwas anderes zu verlagern, wie zum Beispiel vanilla.29th.org (ich habe tatsächlich Schwierigkeiten, mir eine gute URL-Konvention einzufallen zu lassen, da wir mittlerweile mehrere alte Foren haben!).

Daher möchte ich Anfragen, die dem URL-Muster von Vanilla entsprechen, auf die andere Domain umleiten. Das wäre mit einer nginx-Regel sehr einfach, aber (a) wollte ich prüfen, ob es eine integrierte Funktion von Discourse gibt, wie z. B. Permalinks, und (b) falls nicht, wollte ich fragen, wie ich die nginx-Konfiguration auf die richtige Weise bearbeiten soll (es wäre großartig, wenn ich sie auch versionieren könnte).

Zum Kontext: Die Vanilla-Topic-URLs sehen so aus:

/discussion/42206/example-topic#latest

Vielen Dank!

Ich würde eine nginx-Regel verwenden, um /discussion auf die neue/alte Domain umzuleiten. (Und ich würde die alten Daten importieren, aber das ist ja auch mein Beruf.)

@pfaffman Danke – aber wie kann ich herausfinden, wo ich die nginx-Regel bearbeiten muss? Muss ich launcher enter app ausführen und die Datei unter /etc/nginx/nginx.conf oder so etwas ändern? Da es sich um ephemere Container handelt, hätte ich erwartet, dass man etwas Versioniertes bearbeitet – ist das möglich?

Du kannst deinem app.yml Inhalte hinzufügen, um die nginx-Konfiguration zu ändern (oder eine externe Konfiguration auszuführen). Ich bin mir nicht sicher, was der beste Weg ist, dir das zu schicken. Hier ist ein Beispiel, wie man Änderungen an der nginx-Konfiguration für einen anderen Zweck vornimmt:

  after_ssl:
   # nicht alle Hosts auf den Hauptdomänennamen umleiten
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /if \(\$http_host[^\}]*\}/m
        to: ""
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301.*$/
        to: "return 301 https://$host$request_uri;"

Perfekt – genau das, was ich sehen musste. Danke! Ist so etwas irgendwo dokumentiert, wo ich hätte nachschauen können?

1 „Gefällt mir“

Für alle anderen, die hier landen: Ich habe dies implementiert, indem ich per SSH auf meinen Server verbunden, zu /var/discourse navigiert, containers/app.yml mit vim geöffnet und zum Abschnitt hooks gescrollt habe. Anschließend habe ich diesen Teil hinzugefügt:

hooks: # diese Zeile sollte bereits vorhanden sein
  after_ssl:
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: "location @discourse {"
        to: |
          location /discussion/ {
            return 301 https://vanilla.29th.org$request_uri;
          }

          location @discourse {
  after_code: # diese Zeile sollte bereits vorhanden sein
1 „Gefällt mir“

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