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?
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?
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:
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.
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/
Quindi non hai menzionato il fatto che l’intero tuo forum è un’installazione in una sottocartella.
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
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)
Ottima scoperta @pfaffman , quel test significa che avrebbe dovuto funzionare davvero.
Wow, non sapevo nemmeno che fosse possibile!
Sì, è piuttosto ordinato, vedi Serve Discourse from a subfolder (path prefix) instead of a subdomain
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?
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.

