Alte Forum-URLs mit Permalinks auf neue Discourse-URLs umleiten
Wenn Sie mit einem unserer Import-Skripte von einer anderen Forensoftware zu Discourse gewechselt sind, möchten Sie wahrscheinlich, dass Ihre hart erarbeiteten Google-Suchergebnisse weiterhin auf denselben Inhalt verweisen. Discourse verfügt über eine integrierte Methode, um dies für Sie zu handhaben, als Alternative zum Schreiben von nginx-Regeln, unter Verwendung der Permalink-Lookup-Tabelle.
Die Permalink-Tabelle ermöglicht es Ihnen, zwei Dinge festzulegen: eine URL, die abgeglichen werden soll, und was diese URL weiterleiten soll. Es gibt einige Optionen, um zu definieren, wohin die URL weitergeleitet werden soll. Legen Sie eine dieser Optionen fest:
topic_id: um ein Thema anzuzeigen
post_id: um einen bestimmten Beitrag innerhalb eines Themas anzuzeigen
category_id: um eine Kategorie anzuzeigen
external_url: um zu einer URL weiterzuleiten, die möglicherweise nicht zu Ihrer Discourse-Instanz gehört
Wenn beispielsweise die Topic-URLs Ihres ursprünglichen Forums wie http://example.com/discussion/12345 aussahen und die URL für dieses Thema nach dem Import http://example.com/t/we-moved/987 lautet, können Sie die Zuordnung wie folgt einrichten:
cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)
Discourse leitet dann mit dem HTTP-Antwortstatuscode 301 (dauerhaft verschoben) zur korrekten URL für die Topic-ID 12345 weiter. Die 301 sollte Suchmaschinen veranlassen, ihre Aufzeichnungen zu aktualisieren und die neuen URLs zu verwenden.
Wenn Sie möchten, dass einige URLs von Discourse weg umgeleitet werden, können Sie dies tun, indem Sie external_url festlegen:
Ist es möglich, die Rewrite-Regel direkt im Discourse Docker-Cluster zu speichern? Es gibt einen Webserver, der sich um HTTP und SSL kümmert. Kann ich dort etwas hinzufügen?
Ich sehe nicht, wie das funktionieren kann, da nginx die neuen Topic-IDs nicht kennt. Die /threads-IDs müssen in die Discourse-Topic-ID umgewandelt werden.
Wenn ich /threads/name.1234 aufrufe, wird es zu /t/name umgeschrieben und dann wird mir der richtige Beitrag angezeigt. Die ID wird in diesem Moment nicht verwendet, das habe ich gerade getestet.
Wahrscheinlich nur, wenn du Glück hast und Discourse und dein altes Forum die gleichen Slugs generieren (und der Slug nicht mit einer Zahl beginnt), aber das ist wahrscheinlich gut genug.
Wenn du NGINX wie vorgeschlagen ändern möchtest, kannst du dir die Webvorlage in discourse_docker ansehen, um zu erfahren, wie du die Nginx-Konfiguration innerhalb des Containers ändern kannst. Hier ist ein Beispiel:
Nein. Sie fügen dies zu Ihrer app.yml hinzu und es wird bei jedem Neuerstellen angewendet.
Um Zeit beim Testen zu sparen, könnten Sie:
cd /var/discourse
./launcher enter app
apt update
apt-get install -y vim nano
Verwenden Sie dann vim oder nano, um zu bearbeiten, was auch immer Sie sehen möchten, um zu sehen, ob es das tut, was Sie denken (und sparen Sie 10-20 Minuten pro Neuerstellung). Sie können nginx mit sv restart nginx neu starten.
Nichts von dem oben Genannten wurde getestet, aber es sollte nahe dran sein.