Mi scuso se ho diagnosticato male il problema, ma recentemente ho riscontrato alcuni problemi dopo un aggiornamento su una configurazione in sottocartella che funzionava in precedenza, quindi penso che possa esserci stata una regressione su alcuni fronti in tempi recenti? In particolare, sto auto-ospitando Discourse utilizzando la configurazione in sottocartella descritta qui, che funzionava felicemente (per quanto ne so) fino a poco tempo fa.
Attualmente, quando accedo utilizzando SSO o quando passo dalla modalità anonima e viceversa (e forse anche in altre situazioni che non ho ancora individuato), vengo reindirizzato a https://my_machine/discourse_path_stuff, invece di essere reindirizzato a https://my_machine/forum/discourse_path_stuff. Succede anche che quando vado su https://my_machine/forum (l’endpoint corretto), la barra degli indirizzi viene modificata per mostrare https://my_machine (con la sottocartella rimossa), anche se la maggior parte dei link sembra risolvere correttamente.
Purtroppo non ricordo su quale commit ero quando le cose funzionavano, ma sono abbastanza sicuro che fosse sotto l’ombrello “2.4.0.beta10” e probabilmente era nei circa 10 giorni precedenti. Attualmente sto eseguendo bd49d4af1a.
Mi scuso se sto semplicemente facendo qualcosa di stupido, e sono felice di aiutare a individuare il problema se ci sono suggerimenti su dove dovrei guardare.
Stiamo utilizzando il protocollo SSO di Discourse, che funzionava sicuramente senza problemi in precedenza. L’handshake sembra ancora avvenire correttamente, ma alla fine viene reindirizzato al posto sbagliato. La chiave "return_sso_url" nel payload SSO torna correttamente al nostro endpoint SSO (con /forum).
Ho anche provato a eseguire un rebuild, ma non sembra aver risolto il problema.
Purtroppo, potrebbe essere difficile fare il debug di questo problema poiché non mi sento a mio agio nel dare accesso a persone esterne, dato che questa istanza esiste per un corso e non mi sento a mio agio nel condividere dati degli studenti con terze parti (anche se mi fido di te personalmente!). Tuttavia, se può aiutare, sono felice di provare a replicare questa configurazione su un server diverso a cui potrei darti accesso…
Vedo anche che il link per entrare/uscire dalla modalità anonima utilizza window.location.reload() per ricaricare la pagina dopo aver inviato una richiesta a un endpoint per passare alla modalità anonima. Quindi quel ricaricamento vedrebbe sicuramente l’URL riscritto (non più contenente /forum), il che causerebbe questo problema (non sono sicuro se sia una situazione simile per i problemi di SSO).
Darò un’occhiata ai recenti changeset per vedere se la cosa che (penso?) riscrive window.location sia un’aggiunta recente.
Inoltre, Discourse.getURL('/login') mi restituisce ancora il risultato corretto (con /forum).
I percorsi si resettano senza il prefisso della sottocartella nella barra degli indirizzi del browser.
Esempio:
Visito example.com/forum → dopo il caricamento del forum, la barra degli indirizzi mostra example.com
Poi clicco su “Latest” → vengo reindirizzato a latest e la barra degli indirizzi mostra example.com/forum/latest
Aggiorno la pagina nel browser, il sito si ricarica e la barra degli indirizzi mostra example.com/latest
Quando ricarico di nuovo mentre sono su example.com/latest, ottengo un errore 404 (perché il mio nginx instrada solo /forum a Discourse).
L’anteprima del link in basso a sinistra nel browser viene mostrata come example.com/latest, example.com/new, ecc. Ricaricare un argomento rimuove anche /forum dall’URL, ma poi cambia di nuovo, tornando a /forum/t/[…].
Ero precedentemente alla versione 2.4.0.beta2 e non ricordo questo problema.
Ottimo, grazie! Sono contento di sapere di non essere pazzo.
Tuttavia, esaminando i commit recenti (più o meno), non sono riuscito a individuare un punto evidente in cui avvenisse questa riscrittura. Sarebbe possibile ricevere un riferimento su dove nel codice ciò sta o stava avvenendo? (Sto cercando di familiarizzare con la base di codice).
Sarebbe possibile! Solo che non sono la persona giusta. Sono semplicemente “quello” del team che per caso ha un’installazione locale in una sottocartella. Ma non sono un ingegnere. David dovrebbe essere in grado di indicarti la direzione giusta quando inizierà a lavorare sul problema più avanti questa settimana.
Quasi sicuramente questa modifica che era relativa a questo problema. Non sono sicuro esattamente di quale sia il problema, ma ci sto dando un’occhiata