Re scrittura del percorso lato client non riuscita con configurazione di sottocartella

Continuando la discussione da Discourse rewriting url path behaviour failing due to subfolder:

Ho esattamente lo stesso problema del tema menzionato, in cui l’URL viene riscritto solo in scenari in cui l’inizio di una sottorotta è uguale alla sottocartella. Sto usando /f come sottocartella; comprendo le limitazioni e le difficoltà di questa configurazione, ma tutto il resto funziona correttamente, quindi vorrei ricevere aiuto per risolvere il problema, se possibile.

Non sto utilizzando una rotta Discourse esistente, ma se una sottocartella di una sola lettera è un problema, vorrei provare a risolverlo prima di considerare una configurazione diversa.

Alcune rotte che vengono riscritte:

  • /f/t/food-chain-magnate/4826/f/tood-chain-magnate/4826
  • /f/tag/food-chain-magnate/f/tagood-chain-magnate
  • /f/u/renato/follow/following/f/u/renatoollow/following
  • /f/u/fred/summary/f/ured/summary

Poiché si tratta di una riscrittura lato client, le stesse URL funzionano correttamente se richiamate con CURL.

Ecco il commit che ha originariamente risolto il problema, ma getURL è stato modificato per utilizzare gli helper get-url invece di Discourse.BaseUri.

Seguendo le chiamate a getURL, location.pathname è corretto alla prima chiamata (iniziando con /f), ma in una delle chiamate successive la sottocartella viene rimossa e diventa /t/f-started-slug/id, causando l’esecuzione di questa sostituzione su quel /f.

Non conosco abbastanza gli interni di Discourse per capire appieno dove avviene questa riscrittura, ma testando nella mia istanza, forzando la sostituzione in withoutPrefix ad agire solo all’inizio di path sembra risolvere il problema.

// cambiando ...
return path.replace(rootURL, "");
// in qualcosa come ... (assumendo che rootURL non debba essere escapato)
return path.replace(new RegExp("^" + rootURL), "")
// o senza regex ...
return path.indexOf(rootURL) === 0 ? path.slice(rootURL.length) : path;

Non so se questa potrebbe essere una correzione possibile o se introdurrebbe qualche regressione; qualsiasi aiuto è apprezzato.

1 Mi Piace

Be’, una ricerca migliore sugli argomenti esistenti mi avrebbe portato a una risposta di ieri che potrebbe risolvere questo…
https://meta.discourse.org/t/two-bugs-with-usernames-starting-with-subfolder-name/169505/6

AGGIORNAMENTO: Ho appena aggiornato a 70050a8ba3 e il problema persiste.

2 Mi Piace

Darò un’occhiata a questo quando avrò tempo.

4 Mi Piace

Sembra effettivamente questa la strada giusta, grazie per l’indagine e per la segnalazione del bug. Questa PR dovrebbe risolvere il problema:

Puoi provarla @renato?

2 Mi Piace

Funziona benissimo ora, grazie!

2 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 7 giorni. Non sono più consentite nuove risposte.