Désolé si j’ai mal diagnostiqué le problème, mais j’ai récemment rencontré quelques soucis après une mise à niveau sur une configuration en sous-dossier qui fonctionnait auparavant. Je pense donc qu’il pourrait y avoir eu une régression sur certains points récemment ? En particulier, j’héberge moi-même Discourse en utilisant la configuration en sous-dossier décrite ici, qui fonctionnait sans problème (à ma connaissance) jusqu’à récemment.
Actuellement, lors de la connexion via SSO ou lors du passage au mode anonyme (et peut-être dans d’autres situations que je n’ai pas encore identifiées), je suis redirigé vers https://my_machine/discourse_path_stuff, au lieu d’être redirigé vers https://my_machine/forum/discourse_path_stuff. De plus, lorsque je vais sur https://my_machine/forum (le bon point de terminaison), ma barre d’adresse est réécrite pour afficher https://my_machine (le sous-dossier étant supprimé), bien que la plupart des liens semblent être résolus correctement.
Malheureusement, je ne me souviens pas du commit exact sur lequel j’étais lorsque tout fonctionnait, mais je suis presque certain qu’il s’agissait de la version “2.4.0.beta10”, probablement il y a environ 10 jours. Je tourne actuellement sur bd49d4af1a.
Je m’excuse si je fais simplement quelque chose de stupide, et je suis heureux de vous aider à identifier le problème si vous avez des suggestions sur où je devrais chercher.
Nous utilisons le protocole SSO de Discourse, qui fonctionnait parfaitement auparavant. La poignée de main semble toujours se dérouler correctement, mais la redirection finale se fait vers le mauvais endroit. La clé "return_sso_url" dans la charge utile SSO revient correctement à notre point de terminaison SSO (avec /forum).
J’ai également tenté une reconstruction, mais cela n’a pas semblé résoudre le problème.
Malheureusement, cela pourrait être difficile à déboguer car je ne me sens pas à l’aise à l’idée de donner accès à des personnes extérieures, car cette instance est destinée à un cours et je ne souhaite pas partager les données des étudiants avec des tiers (même si je vous fais confiance personnellement !). Cependant, si cela peut aider, je suis heureux de tenter de reproduire cette configuration sur un autre serveur auquel je pourrais vous donner accès…
Je remarque également que le lien pour entrer/sortir du mode anonyme utilise window.location.reload() pour recharger la page après avoir envoyé une requête à un point de terminaison afin de basculer en mode anonyme. Ce rechargement verrait donc assurément l’URL réécrite (ne contenant plus /forum), ce qui provoquerait ce problème (je ne sais pas si c’est une histoire similaire pour les problèmes SSO).
Je vais jeter un coup d’œil aux derniers changements pour voir si l’élément qui (je pense ?) réécrit window.location est une ajout récent.
De plus, Discourse.getURL('/login') me donne toujours le bon résultat (avec /forum).
Les chemins sont réinitialisés sans le préfixe du sous-dossier dans la barre d’adresse du navigateur.
Exemple :
Je visite example.com/forum → une fois le forum chargé, la barre d’adresse affiche example.com
Ensuite, je clique sur « Derniers » → la navigation vers « derniers » s’effectue et la barre d’adresse affiche example.com/forum/latest
J’actualise la page dans le navigateur, le site se recharge et la barre d’adresse affiche example.com/latest
Lorsque j’actualise à nouveau alors que je suis sur example.com/latest, une erreur 404 apparaît (car mon nginx ne route que /forum vers Discourse).
L’aperçu du lien en bas à gauche du navigateur s’affiche comme example.com/latest, example.com/new, etc. L’actualisation d’un sujet supprime également /forum de l’URL, mais cela change ensuite à nouveau, pour revenir à /forum/t/[…].
J’étais précédemment sur la version 2.4.0.beta2 et je ne me souviens pas de ce problème.
Super, merci ! Content de savoir que je ne suis pas fou.
En fouillant dans les commits récents, je n’ai pas pu repérer de point évident où cette réécriture se produit. Serait-il possible d’avoir un indice sur l’endroit dans le code où cela se passe ou se passait ? (Je suis en train d’essayer de me familiariser avec la base de code).
Ce serait possible ! Je ne suis simplement pas la bonne personne. Je suis juste « ce gars » de l’équipe qui se trouve avoir une installation dans un sous-dossier local. Mais je ne suis pas ingénieur. David devrait pouvoir vous orienter dans la bonne direction lorsqu’il commencera à travailler sur le problème plus tard cette semaine.
Il s’avère que cela était complètement sans rapport avec ce commit. J’ai identifié la source du problème, et une correction est en cours de préparation :