Ein phpBB3-Forum zu Discourse migrieren

Siehe SiteSettings.permalink_redirects

Bearbeitet: Ups. Permalink-Normalisierungen

Sie meinen unter /admin/site_settings/category/all_results nach permalink_redirects suchen? Diese Einstellung existiert bei mir nicht.

Aber permalink_normalizations funktioniert irgendwie, indem es /^forum\\/(view.*)/\\1 verwendet:

  • Alle phpBB-Links beginnen mit view, wie viewtopic.php und viewforum.php. Tatsächlich scheinen dies die einzigen beiden URLs zu sein, die in unserem Fall migriert wurden, sodass der Regex gehärtet oder in zwei aufgeteilt werden könnte, um den vollständigen Pfad abzugleichen.
  • Dieser Regex (sed-Syntax) nimmt also alle URLs, die mit /forum/view beginnen, und entfernt den Teil /forum/.

Jetzt müssen wir nur noch alle /phpbb/ (unser alter Forumspfad) zu /forum/ auf dem Webserver (oder in unserem Fall Cloudflare) umleiten und Discourse erledigt den Rest. Hätte ich das vor ~3 Jahren gefunden, anstatt alle Backlinks zu zerstören :lächelnderträne:.

Aber lassen Sie mich wissen, wo sich dieser permalink_redirects befinden soll, vielleicht benötigt er ein Plugin oder war Teil des phpBB-Import-Plugins oder so?

EDIT: Funktioniert gut:

root@micha:~# curl -IL https://dietpi.com/phpbb/viewtopic.php?p=46083
HTTP/2 301
location: /forum/viewtopic.php?p=46083

HTTP/2 301
location: https://dietpi.com/forum/t/is-there-a-simple-launch-page-for-dietpi/11237/1
x-discourse-route: permalinks/show

HTTP/2 200
x-discourse-route: topics/show

Die erste Umleitung /phpbb => /forum erfolgt bei Cloudflare über eine Umleitungsregel, um triviale Last von unserem Ursprung fernzuhalten. Die zweite Umleitung zum eigentlichen Thema erfolgt bei Discourse über Permalinks, wobei /forum/ durch die Permalinks-Normalisierung entfernt wird, um die von Discourse hinzugefügten Permalinks abzugleichen, die weder den alten noch den neuen Foren-Unterverzeichnispfad enthalten.

Entschuldigung. Das meinte ich.

Nein. Machen Sie einfach eine Normalisierung für diesen Pfad.

Das funktioniert nicht, da Discourse unter /forum lebt und keine Anfragen an /phpbb sieht. Wenn Discourse auf einem Unterpfad liegt, der nicht mit dem Pfad der vorherigen Forensoftware übereinstimmt, die importiert werden soll, gibt es keinen anderen Weg, als eine Weiterleitung (oder ein Rewrite vor dem Proxy) zum Discourse-Pfad durchzuführen, damit dessen Normalisierung wirksam wird.

1 „Gefällt mir“

Stimmt. Das habe ich übersehen. Du musst /phpbb auf /forum umleiten und wahrscheinlich immer noch mit Normalisierungen herumfummeln.

Okay, aber das war tatsächlich nicht allzu schwer: /^forum\\/(view.*)/\\1 funktioniert perfekt für unsere alten phpBB-Permalinks. Ich bin mir nicht sicher, ob es, je nach Einstellungen, andere Permalinks gibt, die vom Import-Plugin generiert werden als viewforum.php und viewtopic.php, wie vielleicht Links zu Benutzerprofilen oder Ähnliches?

Es wäre eigentlich schön, eine Möglichkeit zu haben, Permalinks zu scrollen/durchzusehen oder zu sortieren, um besser zu wissen, welche URL-Schemata enthalten sind. Aber OOT, und nachdem ich die Suchmuster durchlaufen habe, bin ich sicher, dass in unserem Fall nur die beiden oben genannten existieren.

Es sieht so aus, als ob das Skript nur Kategorien-, Themen- und Beitrags-Permalinks erstellt.

Wenn Sie Benutzer-Permalinks erstellen wollten und die Benutzerprofile im alten System die Benutzer-Import-ID enthalten, könnten Sie diese mit etwas Ruby in der Konsole erstellen.

1 „Gefällt mir“

Gut zu wissen. Und Themen- und Beitrag-URLs verwenden dasselbe PHP-Skript. Um jegliche unbeabsichtigte Normalisierung auszuschließen, könnte mein Regex in zwei Teile aufgeteilt werden:

  1. /^forum\\/(viewforum.php\\?.*)/\\1 für Kategorien
  2. /^forum\\/(viewtopic.php\\?.*)/\\1 für Themen und Beiträge

… oder /^forum\\/(view(forum|topic).php\\?.*)/\\1, ich bin mir nicht sicher, ob es einen geringfügigen Unterschied in Bezug auf die Leistung gibt.

Profil-URLs werden ohnehin wahrscheinlich keine Backlinks haben. Wir verwenden es, um Benutzern, die Fehler gemeldet haben oder deren Vorschläge in unser Projekt aufgenommen wurden, Gutschriften in unseren Versionshinweisen zu geben. Aber das ist wahrscheinlich ein seltener Fall, und Links in unseren Versionshinweisen wurden sofort aktualisiert, als wir zu Discourse wechselten.

1 „Gefällt mir“