Mit dem letzten Update ist der Permalink zur Kategorie defekt, Permalinks für Themen funktionieren einwandfrei.
Zum Beispiel: category/11562 leitet zu c/11562 weiter, was falsch ist. Die Weiterleitung, die korrekt als Ziel gesetzt ist, sollte c/general/4 oder c/4 sein.
Kann mir jemand bei diesem Problem helfen?
Sie haben einen Permalinks für category/11562 erstellt, der früher zu general umgeleitet hat, aber jetzt ist er defekt?
Von welchem Update-Zweig stammt das?
Korrekt, es hat vorher gut funktioniert. Dann habe ich aktualisiert auf:
<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">
Die DB komplett geleert, um einige andere Forendaten von Grund auf neu zu importieren, und jetzt funktioniert es nicht mehr.
Ich denke, das ist das Problem, da ich dies bei Tests, die heute Morgen bestanden wurden, nicht reproduzieren kann.
Können Sie sehen, ob der Permalink noch in Ihrer Datenbank vorhanden ist und ob er noch auf die richtige Stelle verweist?
Ich habe die Permalinks mit dem neuen Import erneut hinzugefügt. Dies geschieht durch das Importskript. Ich habe aber auch versucht, sie manuell über das Web hinzuzufügen. Bitte finden Sie im Anhang einen Screenshot des Webs und die Ergebnisse aus der DB. Vielleicht übersehe ich etwas:
Ihr Permalink befindet sich nicht unter /category/11562, sondern unter /forum/category/11562.
Meine Vermutung ist, dass Sie Ihre Permalink-Normalisierungen unterwegs verloren haben.
Ich verstehe nicht, ob ich die Antwort auf https://preview.vaadin.com/forum/category/11562 überprüfe
Ich erhalte eine 302 mit Location:
https://preview.vaadin.com/forum/c/11562
Während für Themen zum Beispiel:
https://preview.vaadin.com/forum/thread/851770
Ich erhalte eine 301 mit Location:
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931
Ich erwarte, dass Discourse beides gleich behandelt, und wie Sie sehen können, behalten beide das Segment /forum/ bei.
Sie haben also nicht erwähnt, dass Ihr gesamtes Forum eine Unterordnerinstallation ist.
Ich habe mich etwas genauer damit beschäftigt und verstehe nicht, wie das jemals funktioniert haben könnte, da category/ immer die Route categories#redirect auslösen wird, und das hat sich nicht kürzlich geändert.
get "category/*path" => "categories#redirect"
EDIT: Der Beitrag unten zeigt, dass es früher funktioniert hat.
Ja. Ich kann mir nicht vorstellen, wie Permalinks und Permalink-Normalisierungen bei einer Unterordnerinstallation funktionieren würden.
Und es war schon immer eine Unterordnerinstallation?
Und es hat sich nichts anderes geändert, als Sie das Importskript erneut ausgeführt haben?
Es scheint am wahrscheinlichsten, dass etwas in Ihrem Skript anders ist.
Warten Sie. https://meta.discourse.org/category/67 leitet zu Announcements - Discourse Meta um, also . . . nein, aber es gibt eine Spezifikation, die zeigt, dass Permalinks diese /category-Umleitung überschreiben, und sie ist 4-5 Jahre alt.
Ich denke also, ich würde als Nächstes einige Kategorie-Umleitungen von Hand erstellen, um herauszufinden, was vor sich geht (wie /category/mycategory oder etwas anderes, das nicht einmal Zahlen enthält)
Guter Fund @pfaffman , dieser Test bedeutet, dass es tatsächlich hätte funktionieren sollen.
Wow, das wusste ich gar nicht, dass das möglich ist!
Ja, das ist ziemlich praktisch, siehe Serve Discourse from a subfolder (path prefix) instead of a subdomain
Vielen Dank für all Ihre Antworten!
Interessanterweise haben wir festgestellt, dass Permalinks für Kategorien nur aus einem Unterordner funktionieren, wenn in der ursprünglichen URL kein Pfad namens /category/ vorhanden ist. Wie @pfaffman in seiner Antwort erwähnt hat. Zum Beispiel leitet /forum/category_foo/123 korrekt zur Zielkategorie weiter.
Discourse erfasst /category/ und überschreibt es zu /c/
Folglich kann dies sehr einfach gelöst werden:
Fügen Sie einen Permalink von /c/11562 hinzu, der die Umleitung von der alten category/11562 zur Kategorie Allgemein /c/4 ist.
Und Sie hatten Recht, die erste Installation erfolgte ohne Unterordner, die zweite jedoch mit Unterordner, dies ist die dritte. Und wir haben getestet, und ich glaube, es hat die ersten beiden Male funktioniert. Das Einzige, was sich zwischen der 2. und 3. Installation geändert hat, ist, dass wir die Datenbank zwischen der 1. und 2. nicht bereinigt haben, und für die 3. war es eine saubere Installation mit einer neuen Datenbank außerhalb von Docker (neben dem Upgrade auf Discourse v3). Ich vermute also, dass sich in der Discourse v3 Beta etwas geändert hat. Ansonsten, warum hat es jemals funktioniert, auch ohne Unterordner?
Hier ist Ihre Antwort
Wenn ich das richtig verstanden habe, meinen Sie, dass Discourse die Weiterleitung von /category/ zu /c/ nur dann anwendet, wenn ein Segment in der Route vorhanden ist.
Wenn ich jedoch Ihr Forum als Beispiel nehme: https://meta.discourse.org/ und https://meta.discourse.org/category/1 eingebe, werde ich zu https://meta.discourse.org/c/bug/1 weitergeleitet.
Was wir auch bei unserer Installation erleben, wäre es auch für Ihre Website unmöglich, von /category/#old_number zu /c/#real_category weitergeleitet zu werden, Sie würden immer auf /c/#old_number landen.

