Avec la dernière mise à jour, le permalien de la catégorie est cassé, les permaliens des sujets fonctionnent correctement.
Par exemple : category/11562 redirige vers c/11562, ce qui est incorrect. La redirection correctement définie comme destination devrait être c/general/4 ou c/4.
Quelqu’un pourrait-il aider avec ce problème ?
Vous avez créé un permalien pour la catégorie/11562 qui redirigeait vers général, mais il est maintenant cassé ?
De quelle branche de mise à jour s’agit-il ?
Correct, it used to work fine. Then, I updated to:
<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">
Completely clean the DB to re-import some other forum data from scratch, and now is not working.
Je pense que c’est le problème, car je ne peux pas reproduire cela dans les tests passés de ce matin.
Pouvez-vous vérifier si le permalien est toujours présent dans votre base de données et s’il pointe toujours au bon endroit ?
J’ai de nouveau ajouté les permaliens avec la nouvelle importation, cela est fait par le script d’importation. Mais j’ai aussi essayé de les ajouter manuellement via le web. S’il vous plaît, trouvez ci-joint une capture d’écran du web et les résultats de la base de données. Peut-être que je rate quelque chose :
Votre permalien n’est pas à /category/11562 mais à /forum/category/11562.
Ma supposition rapide est que vous avez perdu vos normalisations de permalien en cours de route.
Je ne comprends pas si je vérifie la réponse à https://preview.vaadin.com/forum/category/11562
Je reçois un 302 avec l’emplacement :
https://preview.vaadin.com/forum/c/11562
Alors que pour les sujets par exemple :
https://preview.vaadin.com/forum/thread/851770
Je reçois un 301 avec l’emplacement :
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931
Je m’attends à ce que Discourse gère les deux de manière égale, et comme vous pouvez le voir, les deux conservent le segment /forum/
Vous n’avez donc pas mentionné le fait que votre forum entier est une installation dans un sous-dossier.
J’ai donc creusé un peu plus et je ne comprends pas comment cela aurait jamais pu fonctionner, puisque category/ déclenchera toujours la route categories#redirect, et cela n’a pas changé récemment.
get "category/*path" => "categories#redirect"
EDIT le post ci-dessous montre que cela fonctionnait auparavant.
Ouais. Je n’arrive pas à comprendre comment les permaliens et les normalisations de permaliens fonctionneraient dans une installation dans un sous-dossier.
Et a-t-il toujours été une installation dans un sous-dossier ?
Et rien d’autre n’a changé lorsque vous avez réexécuté le script d’importation ?
Il semble très probable que quelque chose soit différent dans votre script.
Attendez. https://meta.discourse.org/category/67 redirige vers Announcements - Discourse Meta, donc . . . non, mais il y a une spécification qui montre que les permaliens remplacent cette redirection /category et elle date de 4-5 ans.
Donc, je pense que je créerais manuellement des redirections de catégories ensuite pour comprendre ce qui se passe (comme /category/mycategory ou autre chose qui n’a même pas de chiffres)
Bonne trouvaille @pfaffman , ce test signifie que cela aurait dû fonctionner en effet.
Wow, je ne savais même pas que c’était possible !
Oui, c’est assez sympa, voir Serve Discourse from a subfolder (path prefix) instead of a subdomain
Merci pour toutes vos réponses !
Fait intéressant, nous avons découvert que les permaliens pour les catégories fonctionnent à partir d’un sous-dossier uniquement s’il n’y a pas de chemin nommé /category/ dans l’URL d’origine. Comme @pfaffman l’a mentionné dans sa réponse. Par exemple, /forum/category_foo/123 redirige correctement vers la catégorie générale de destination.
Discourse capture /category/ et remplace par /c/
Par conséquent, cela peut être résolu très facilement :
ajouter un permalien de /c/11562 qui est la redirection de l’ancien category/11562 vers la catégorie Générale /c/4.
Et vous aviez raison, la première installation était sans sous-dossier, mais la deuxième en avait un, c’est la troisième. Et nous avons testé, et je crois que cela a fonctionné les deux premières fois. La seule chose qui a changé entre la 2ème et la 3ème est que nous n’avons pas nettoyé la base de données entre la 1ère et la 2ème, et pour la 3ème, il s’agissait d’une installation propre avec une nouvelle base de données en dehors de docker (outre la mise à niveau vers Discourse v3). Je suspecte donc que quelque chose a changé dans la bêta de Discourse v3. Sinon, pourquoi cela a-t-il jamais fonctionné, même sans sous-dossier ?
Voici votre réponse
Si j’ai bien compris, ce que vous voulez dire, c’est que Discourse n’applique la redirection de /category/ vers /c/ que s’il y a un segment dans la route.
Néanmoins, si je prends votre forum comme exemple : https://meta.discourse.org/ et que je tape https://meta.discourse.org/category/1, je suis redirigé vers https://meta.discourse.org/c/bug/1.
Ce qui est la même chose que ce que nous expérimentons avec notre installation, il serait impossible pour votre site aussi d’être redirigé de /category/#old_number vers /c/#real_category, vous finiriez toujours par /c/#old_number.

