Redirect old forum URLs to new Discourse URLs using permalinks

Redirection des anciennes URL de forum vers les nouvelles URL Discourse à l’aide des permaliens

Si vous êtes passé d’un autre logiciel de forum à Discourse en utilisant l’un de nos scripts d’importation, vous voudrez probablement que tous vos résultats Google durement acquis continuent de pointer vers le même contenu. Discourse dispose d’un moyen intégré pour gérer cela pour vous, en alternative à la rédaction de règles nginx, en utilisant la table de correspondance des permaliens.

La table des permaliens vous permet de définir deux choses : une URL à faire correspondre et ce que cette URL doit afficher. Il existe quelques options pour définir vers où l’URL doit rediriger. Définissez l’une de celles-ci :

  • topic_id : pour afficher un sujet
  • post_id : pour afficher un message spécifique dans un sujet
  • category_id : pour afficher une catégorie
  • external_url : pour rediriger vers une URL qui n’appartient peut-être pas à votre instance Discourse

Par exemple, si les URL de vos sujets de forum d’origine ressemblaient à http://example.com/discussion/12345, et que l’URL de ce sujet après l’importation est http://example.com/t/nous-avons-deplace/987, vous pouvez alors configurer la correspondance comme suit :

cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)

Discourse effectuera alors une redirection avec le code d’état HTTP 301 (déplacé de façon permanente) vers la bonne URL pour le sujet id 12345. Le 301 devrait inciter les moteurs de recherche à mettre à jour leurs enregistrements et à commencer à utiliser les nouvelles URL.

Si vous souhaitez que certaines URL redirigent hors de Discourse, vous pouvez le faire en définissant external_url :

Permalink.create(url: '/discussion/12345', external_url: 'http://archived.example.com/discussion/12345')

Informations supplémentaires

Pour trouver l’ID d’une sous-catégorie, vous pouvez la rechercher par son slug comme ceci :

Category.find_by_slug('products').id

Pour supprimer le permalien de cette URL, faites ceci :

Permalink.find_by_url("/blah").destroy

Il ne peut y avoir qu’un seul enregistrement de permalien par URL, alors recherchez simplement par URL.

Créer une carte de sujets de MyBB vers Discourse

Questions de redirection de Discourse vers WordPress

https://meta.discourse.org/t/discourse-to-wordpress-redirect-questions/87031

Normalisation des permaliens


Dernière révision par @SaraDev le 2022-06-03T20:00:00Z

37 « J'aime »