Tout d’abord, il s’agit d’un cas limite très spécifique à ma configuration, avec le sous-dossier /f.
Le lien Discourse vers le menu hamburger pointe vers /faq, sans le sous-dossier, car /faq commence par /f.
Compte tenu de cette citation :
Je pense que nous pourrions modifier
const found = url.startsWith(baseUri);
en quelque chose comme
const found = url === baseUri || url.startsWith(`${baseUri}/`);
Ainsi, cela correspondrait à /f, /f/, /f/faq, mais pas à /faq, en préfixant correctement baseUri à ce dernier.
Quoi qu’il en soit, la route elle-même ne fonctionne pas non plus : /f/faq renvoie une erreur 404. Je pense donc qu’il existe une logique similaire au niveau du routeur. J’avais déjà remarqué que /f/following ne fonctionnait pas non plus (cc @merefield).
Enfin, j’ai modifié le paramètre du site faq url en /f/guidelines comme solution de contournement, ce qui a corrigé le lien et l’erreur 404, mais a généré une petite bizarrerie : les termes « Guidelines » et « FAQ » apparaissent tous deux dans la barre de navigation, tous deux pointant vers ce qui est défini dans faq url (vous pouvez vérifier sur la page réelle) :
J’ai envoyé une PR pour résoudre le problème de get-url :
Concernant l’erreur 404 sur /f/faq et /f/favicon/proxied, lorsque j’exécute un CURL sur ces routes à l’intérieur du conteneur en contournant Nginx, cela fonctionne. J’ai pu corriger cela en modifiant la directive location décrite dans Serve Discourse from a subfolder (path prefix) instead of a subdomain, en passant de location /subfolder à location /subfolder/.
La barre de navigation affichant à la fois les Règles et la FAQ est le comportement attendu ; il est peu probable que l’utilisateur remplace l’URL de la FAQ par la même URL.