Letztes Update verhindert Permalink für Kategorien

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?

1 „Gefällt mir“

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?

3 „Gefällt mir“

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:

Entschuldigung, es war nur ein Screenshot pro Beitrag erlaubt

Ihr Permalink befindet sich nicht unter /category/11562, sondern unter /forum/category/11562.

Meine Vermutung ist, dass Sie Ihre Permalink-Normalisierungen unterwegs verloren haben.

3 „Gefällt mir“

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.

1 „Gefällt mir“

Sie haben also nicht erwähnt, dass Ihr gesamtes Forum eine Unterordnerinstallation ist.

4 „Gefällt mir“

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.

1 „Gefällt mir“

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)

2 „Gefällt mir“

Guter Fund @pfaffman , dieser Test bedeutet, dass es tatsächlich hätte funktionieren sollen.

1 „Gefällt mir“

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

4 „Gefällt mir“

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?

1 „Gefällt mir“

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.