Ultimo aggiornamento danneggia i permalink delle categorie

Con l’ultimo aggiornamento il permalink della categoria è rotto, i permalink degli argomenti funzionano bene.
Ad esempio: category/11562 reindirizza a c/11562 che è errato, il reindirizzamento che è correttamente impostato come destinazione dovrebbe essere c/general/4 o c/4
Qualcuno potrebbe aiutarmi con questo problema?

Hai creato un permalink per category/11562 che prima reindirizzava a general, ma ora è interrotto?

1 Mi Piace

Da quale ramo di aggiornamento proviene?

Corretto, funzionava bene. Poi, ho aggiornato a:

<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">

Ho pulito completamente il DB per reimportare altri dati del forum da zero, e ora non funziona più.

Penso che questo sia il problema, perché non riesco a riprodurlo nei test superati stamattina.

Puoi verificare se il permalink è ancora presente nel tuo database e se punta ancora al posto giusto?

3 Mi Piace

Ho aggiunto di nuovo i permalink con la nuova importazione, è fatto dallo script di importazione. Ma ho anche provato ad aggiungerli manualmente tramite il web. Per favore, allego uno screenshot del web e i risultati del DB. Forse mi sfugge qualcosa:

Mi dispiace, era consentito solo uno screenshot per post

Il tuo permalink non è in /category/11562 ma in /forum/category/11562.

La mia rapida ipotesi è che tu abbia perso le tue normalizzazioni dei permalink lungo il percorso.

3 Mi Piace

Non capisco se controllo la risposta a https://preview.vaadin.com/forum/category/11562

Ricevo un 302 con Location:
https://preview.vaadin.com/forum/c/11562

Mentre per gli argomenti ad esempio:
https://preview.vaadin.com/forum/thread/851770

Ricevo un 301 con Location:
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931

Mi aspetto che Discourse gestisca entrambi allo stesso modo, e come puoi vedere entrambi mantengono il segmento /forum/

1 Mi Piace

Quindi non hai menzionato il fatto che l’intero tuo forum è un’installazione in una sottocartella.

4 Mi Piace

Quindi ho scavato un po’ più a fondo e non capisco come questo possa mai aver funzionato, dato che category/ attiverà sempre il percorso categories#redirect, e questo non è cambiato di recente.

get "category/*path" => "categories#redirect"

EDIT il post qui sotto mostra che in passato funzionava

1 Mi Piace

Sì. Non riesco a capire come funzionerebbero i permalink e le permalink_normalizations in un’installazione in sottocartella.

Ed è sempre stata un’installazione in sottocartella?

E non è cambiato nient’altro quando hai rieseguito lo script di importazione?

Sembra più probabile che ci sia qualcosa di diverso nel tuo script.

Aspetta. https://meta.discourse.org/category/67 reindirizza a Announcements - Discourse Meta, quindi . . . no, ma c’è una specifica che mostra che i permalink sovrascrivono quel reindirizzamento /category e risale a 4-5 anni fa.

Quindi penso che creerei manualmente alcuni reindirizzamenti di categoria la prossima volta per capire cosa sta succedendo (come /category/lamiacategoria o qualcos’altro che non ha nemmeno numeri al suo interno)

2 Mi Piace

Ottima scoperta @pfaffman , quel test significa che avrebbe dovuto funzionare davvero.

1 Mi Piace

Wow, non sapevo nemmeno che fosse possibile!

Sì, è piuttosto ordinato, vedi Serve Discourse from a subfolder (path prefix) instead of a subdomain

4 Mi Piace

Grazie per tutte le tue risposte!

È interessante notare che abbiamo scoperto che i permalink per le categorie funzionano dalla sottocartella solo se non c’è un percorso chiamato /category/ nell’URL di origine. Come menzionato da @pfaffman nella sua risposta. Ad esempio, /forum/category_foo/123 reindirizza correttamente alla categoria generale di destinazione.
Discourse cattura /category/ e sovrascrive in /c/
Di conseguenza, questo può essere risolto molto facilmente:
aggiungere un permalink da /c/11562 che è il reindirizzamento dalla vecchia category/11562 alla categoria Generale /c/4.

E avevi ragione, la prima installazione era senza sottocartella, ma la seconda aveva la sottocartella, questa è la terza. E abbiamo testato, e credo che abbia funzionato le prime 2 volte. L’unica cosa che è cambiata tra la seconda e la terza è che non abbiamo pulito il db tra la prima e la seconda, e per la terza è stata un’installazione pulita con un nuovo db al di fuori di docker (oltre all’aggiornamento a Discourse v3). Quindi sospetto che qualcosa sia cambiato in Discourse v3 beta. Altrimenti, perché avrebbe mai funzionato, anche senza sottocartella?

1 Mi Piace

Ecco la tua risposta

Se ho capito bene, intendi dire che Discourse applica il reindirizzamento da /category/ a /c/ solo se c’è un segmento nel percorso.

Tuttavia, se prendo il tuo forum come esempio: https://meta.discourse.org/ e inserisco https://meta.discourse.org/category/1 vengo reindirizzato a https://meta.discourse.org/c/bug/1.

Che è lo stesso che sperimentiamo con la nostra installazione, sarebbe impossibile anche per il tuo sito essere reindirizzato da /category/#old_number a /c/#real_category, finiresti sempre in /c/#old_number.