Percorsi relativi del sito riscritti in modo errato lato client con sottocartella

Questo funzionava correttamente, ma un aggiornamento recente sembra averlo rotto di nuovo

Aggiungendo un link relativo

[Full version 1.9.2 change history](/downloads/continuaci/continua-ci-version-history-v192)

il link viene renderizzato correttamente e il markup è corretto, tuttavia, cliccandoci sopra, il link diventa

https://www.finalbuilder.com/forums/downloads/continuaci/continua-ci-version-history-v192

Notate che la nostra istanza di Discourse è installata come sottocartella sotto forums

Sembra che ci siano stati alcuni cambiamenti in quest’area all’inizio di quest’anno che potrebbero essere correlati.

Attualmente stiamo eseguendo la versione 2.8 beta1 - https://github.com/discourse/discourse/commits/28e201f3919e23d734a5414f18dbf83d1d52a5e0

3 Mi Piace

Credo sia ragionevole assumere che qualsiasi link relativo sia relativo alla radice della sottocartella. Quindi, se desideri un link esterno al forum, dovrai utilizzare l’URL completo.

In alternativa, penso che tu possa essere in grado di configurare un routing dei permalink /forum/downloads/* verso https://example.com/downloads/*

2 Mi Piace

Prima funzionava, perché è stato modificato?

Non penserei che questa sia la cosa normale da aspettarsi quando il percorso relativo è ancorato, ovvero /downloads: nel mondo HTML/HTTP questo suggerisce la radice del sito, non la radice della sottocartella.

1 Mi Piace

Quindi, se avessi un link sul tuo sito web principale che inizia con /t/something, come potresti capire se si tratta di un link Discourse o di un link al tuo sito web principale?

1 Mi Piace

Si scriverebbe come /forums/t/something. È ciò che un utente pubblico si aspetterebbe quando scrive un post in un forum. È così che funzionano la maggior parte dei siti web: perché qualcuno dovrebbe sapere di inserire /t/something?

1 Mi Piace

Concordo con @RGJ. Condividere lo stesso prefisso di sottocartella tra più applicazioni è semplicemente invitare ai guai.

Per me è una questione “non risolvibile”.

2 Mi Piace

Davvero? Se scrivi un URL che inizia con /, allora per progettazione si trova alla radice del sito – stai ridefinendo il funzionamento dei link HTML?

Funzionava perfettamente per 2,5 anni sul nostro sito, fino al recente cambiamento che ha rotto tutto.

1 Mi Piace

Questo è il problema: Discourse sta aggiungendo lo stesso prefisso /forums a più applicazioni e questo sta causando i suddetti problemi. Non capisco perché sia necessario modificare l’URL inserito in un post.

1 Mi Piace

Stiamo indagando su questo problema; potrebbe essere correlato a questa correzione:

Concordo sul fatto che i link a /jobs su acme.com debbano puntare a acme.com/jobs indipendentemente dalla configurazione in sottocartella. Non dovrebbero invece puntare a acme.com/forum/jobs.

7 Mi Piace

Ho fatto l’ultimo commit su get-url.js, qualche tempo dopo quello collegato.

Concordo sul fatto che i link non dovrebbero essere riscritti se sono inseriti dall’utente; forse getURL non dovrebbe essere chiamato in questi casi? Penso che getURL debba essere utilizzato per le rotte predefinite di Discourse per “convertirle” nell’impostazione della sottocartella; ci sono alcuni test che si aspettano esplicitamente questo prepending della sottocartella:

Fammi sapere se posso essere d’aiuto.

Ho indagato su questo problema questo pomeriggio e ho una correzione in questa PR:

Purtroppo, il nostro codice routeTo è progettato per funzionare con URL relativi, quindi se chiamiamo url.routeTo("/cool") e c’è una sottocartella sub configurata, verrà riscritto in /sub/cool anche se /cool sembra relativo. Non credo che questo sia corretto, ma scommetto che molto codice ne dipende.

Fortunatamente, in questo caso era il tracciatore di clic a reindirizzare perché pensava che l’URL fosse interno. Ho aggiunto un controllo per assicurarmi che il link interno abbia lo stesso prefisso e ho ripulito i test. Sembra funzionare.

Non ho idea di come sia avvenuta la regressione: ho provato a usare git blame ma non ho ottenuto risultati.

6 Mi Piace

Non sono sicuro se sia correlato o meno, ma dopo aver aggiornato, l’editor dei link non funziona più (appare vuoto o non separa i campi).

Sembra che questo sia peggio.

Se aggiungo un link
[forum relative link](/forums/t/continua-ci-v1-9-2-664-released/7058)

alla fine risulta
[forum relative link](https:///forums/t/continua-ci-v1-9-2-664-released/7058)

che viene renderizzato senza l’attributo href

A proposito, i test sopra riportati sono stati eseguiti con Commits · discourse/discourse · GitHub

Abbiamo anche notato che i collegamenti relativi allo stesso sito, come /downloads, vengono trattati come collegamenti esterni e si aprono in una nuova scheda del browser. Non è davvero un grosso problema.

Inoltre, non è un grosso problema, ma se rimuovi l’ID del post dalla fine di un collegamento a un post del forum, come ho fatto io, la cronologia del browser viene persa quando si clicca sul collegamento, ad esempio questo collegamento.

Purtroppo non riesco a riprodurlo. In locale, quando uso esattamente lo stesso link, viene elaborato correttamente. Vorrei anche aggiungere che la mia patch non dovrebbe modificare il modo in cui i link sono scritti in HTML; gestisce solo ciò che accade quando si clicca su un link.

Credo che questo sia già sotto esame, grazie:

2 Mi Piace