Meine alten Foren-URLs haben das Format /posts/t{topic_id}-{url_slug}.
Ich habe Discoures Permalink verwendet, um die alten Foren-URLs den neuen Discourse-URLs zuzuordnen.
Das Problem ist, dass der Rails Router Anfragen für die alten Foren-URLs an eine der Routen weiterleitet, die der Ressource „posts“ zugeordnet sind. (Ich weiß nicht, welche Route.)
Die Permalink-Normalisierung läuft, nachdem das Routing abgeschlossen ist, daher ist dies keine Lösung.
Ich denke, die Lösung besteht darin, eine benutzerdefinierte Route in config\routes.rb hinzuzufügen, um die Anforderungsverarbeitung durch den PostsController zu überspringen, wenn die URL das Format /posts/t{topic_id}-{url_slug} hat, aber ich bin nicht versiert genug in Rails Routing, um diese Änderung vorzunehmen. Oder ist das vielleicht nicht der richtige Weg?
Wie sehen sie aus? Welche Permalinks hast du hinzugefügt?
Ist das Forum bereits live oder kannst du das Import-Skript noch ausführen? (Tatsächlich kannst du ein Ruby-Skript erstellen, das du in Rails ausführen kannst, um Permalinks wie die von mir beschriebenen hinzuzufügen.)
Ich denke, du möchtest vielleicht deine Permalinks so etwas wie /oldforum/{topic_id} machen und dann einige Konfigurationen zu nginx hinzufügen, um diese /posts/t-URLs abzufangen und sie auf /oldforum/{topic_id} umzuleiten.
Also (laut KI) würdest du mit pups ein replace durchführen (irgendwann bald kannst du es einem Outlet hinzufügen, aber ich weiß nicht, wann das passieren wird), um dies zu deiner discourse.conf Nginx-Konfiguration hinzuzufügen:
# Platziere dies innerhalb deines server {} Blocks
location ~ ^/posts/t(?<topic_id>\d+)-.*$ {
# Permanente Weiterleitung (301)
return 301 /oldforum/$topic_id;
# Alternativ für temporäre Weiterleitung (302) verwende:
# return 302 /oldforum/$topic_id;
}
Ich würde es testen, indem ich diese Änderungen manuell innerhalb des Containers vornehme und dann rückwärts arbeite, um die Änderungen zu deiner app.yml hinzuzufügen.
Ich habe herausgefunden, dass diese Lösung möglicherweise nicht in Frage kommt, da die Weiterleitungs-Kette die SEO-Bewertung der Website beeinträchtigen wird. Es sind zwei 301-Weiterleitungen und drei Anfragen erforderlich, um zum eigentlichen Beitrag zu gelangen.
Und dann soll das Permalink die Anfrage bearbeiten. Das klingt, als sollte es funktionieren, aber ich bin mir nicht sicher.