Mes anciennes URL de forum sont de la forme /posts/t{topic_id}-{url_slug}.
J’ai utilisé le Permalien de Discourse pour mapper les anciennes URL de forum aux nouvelles URL Discourse.
Le problème est que le routeur Rails redirige les requêtes pour les anciennes URL de forum vers l’une des routes associées à la ressource “posts”. (Je ne sais pas laquelle.)
La normalisation des permaliens s’exécute après le routage, ce n’est donc pas une solution.
Je pense que la solution consiste à ajouter une route personnalisée dans config\routes.rb pour ignorer le traitement des requêtes par le PostsController si l’URL est de la forme /posts/t{topic_id}-{url_slug}, mais je ne suis pas assez compétent en routage Rails pour apporter cette modification. Ou, peut-être n’est-ce pas la bonne approche ?
À quoi ressemblent-elles ? Quels sont les permaliens que vous avez ajoutés ?
Le forum est-il déjà en ligne ou pouvez-vous toujours exécuter le script d’importation ? (En fait, vous pouvez créer un script Ruby que vous pouvez exécuter dans Rails pour ajouter des Permaliens comme ceux que je décris.)
Je pense que vous voudrez peut-être que vos Permaliens ressemblent à /oldforum/{topic_id} et ensuite ajouter une configuration à nginx pour intercepter ces URL /posts/t et les rediriger vers /oldforum/{topic_id}.
Donc (selon l’IA) vous feriez un replace avec pups (bientôt vous pourrez l’ajouter à une sortie, mais je ne sais pas quand cela arrivera) pour ajouter ceci à votre configuration nginx discourse.conf :
# Placez ceci à l'intérieur de votre bloc server {}
location ~ ^/posts/t(?<topic_id>\d+)-.*$ {
# Redirection permanente (301)
return 301 /oldforum/$topic_id;
# Alternativement, pour une redirection temporaire (302), utilisez :
# return 302 /oldforum/$topic_id;
}
Je testerais en apportant ces modifications à la main à l’intérieur du conteneur, puis je travaillerais à rebours pour ajouter les modifications à votre app.yml.
J’ai découvert que cette solution pourrait ne pas convenir car la chaîne de redirection affectera le score SEO du site. Il faut deux redirections 301 et trois requêtes pour accéder au message réel.
Et ensuite, laisser le Permalink gérer la requête. Cela semble devoir fonctionner, mais je ne suis pas sûr.