Redirection d'URL avec Nginx dans Digital Ocean

J’ai une configuration Discourse prête à l’emploi sur Digital Ocean.
Je veux rediriger de Flarum vers Discourse mais je n’ai pas trouvé le dossier nginx.

J’ai cherché dans les dossiers /etc/ - /usr/ mais je ne l’ai pas trouvé. Je ne le trouve pas parce que Docker est utilisé ?

Puis-je rediriger avec des expressions régulières via l’interface d’administration ?

Flarum : https://testdiscourse.com/d/123123-asdasd
Discourse : https://testdiscourse.com/t/asdasd/123123

Je veux rediriger comme ci-dessus, mais je n’ai pas trouvé le dossier nginx. Je serais heureux si vous pouviez m’aider.
Aussi, si vous pouvez partager les codes regex, je vous en serais reconnaissant :slight_smile:

Avez-vous effectué une installation standard ou flarum fonctionne-t-il sur le même hôte que Discourse ?

Avez-vous utilisé le script de migration de flarum pour importer vos données ? Il ne semble pas que le script de flarum gère les redirections de permaliens. Je ne peux pas imaginer comment la redirection que vous suggérez pourrait fonctionner à moins que vous n’ayez d’une manière ou d’une autre fait en sorte que les identifiants de sujet dans Discourse correspondent à ceux de flarum.

Si vous avez fait cela d’une manière ou d’une autre, il existe un paramètre de site normalisation des permaliens qui fera ce que vous suggérez. Ce serait quelque chose comme

     /d\\/(\\d+)-(.*)/t\\/\\2\\/\\1/

Mais la section asdasd peut être remplacée par un -, car le slug est ignoré pour le routage.

nginx est à l’intérieur du conteneur docker. Vous pouvez le voir si vous

cd /var/discourse
./launcher enter app

les modifications que vous apportez là-bas seront détruites lorsque vous construirez un nouveau conteneur. Il est possible d’apporter des modifications à votre app.yml qui modifieront la configuration nginx dans le conteneur lorsqu’un nouveau sera construit. Vous pouvez examiner les modèles dans /var/discourse/templates pour quelques exemples.

2 « J'aime »

Je suis entré dans Docker avec la commande ./launcher enter app.
C’est dans nginx :slight_smile: Désolé, je suis un débutant.

Quel fichier dois-je configurer dans nginx ? Avez-vous des connaissances sur ce sujet ?

Le nom de domaine, etc. apparaît-il normalement dans ce fichier ?

La solution optimale ici serait de mettre à jour le script de migration afin que les redirections de permaliens soient créées pour vous.

Ne configurez pas nginx directement, ces modifications seront détruites chaque fois que le conteneur sera reconstruit pour une mise à niveau.

Au lieu de cela, comme le dit @pfaffman, modifiez app.yml pour modifier la configuration nginx.

2 « J'aime »

Je modifie app.yml mais comment dois-je exactement faire la redirection ? :frowning:

J’apprécierais vraiment si vous pouviez m’aider. Il y a plus de 150 000 questions, je ne veux pas essayer de toutes les parcourir :frowning:

Je n’ai jamais été redirigé de cette manière auparavant, et d’après mes recherches sur Internet, je n’ai pas trouvé grand-chose.

Lorsque j’écris la redirection avec rewrite, ce que je veux c’est :

https://testdiscourse.com/d/123123-asda-asdasd-adas

https://testdiscourse.com/t/asda-asdasd-adas

Je n’ai même pas besoin de 123123, comment puis-je faire ça ?

Votre destination a besoin de l’ID du sujet, le stub est facultatif

1 « J'aime »

La section slug n’est-elle pas suffisante ?

https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean

Par exemple, lorsque vous cliquez sur le lien ci-dessus, cette page s’ouvre.

Il n’est donc pas nécessaire d’écrire 235297.

https://meta.discourse.org/t/cake/235297/ le stub n’affecte pas la redirection - vous pouvez avoir n’importe quoi avant l’ID

https://meta.discourse.org/t/235297/ vous pouvez même omettre le stub

https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/ cela fonctionnera mais est plus fragile

1 « J'aime »

Étant donné que les valeurs d’ID dans Flarum et les valeurs d’ID ici sont différentes, les valeurs de slug me suffisent.

C’est dommage de traiter 150 000 questions une par une. Je suis très fatigué :slight_smile:

C’est pourquoi la correction du script d’importation est la solution la plus simple.

1 « J'aime »

Il n’y avait pas d’option de redirection de permalien dans le script d’importation mais :frowning: Je suis aussi nouveau dans le langage Ruby et postgresql. J’adorerais, mais je ne peux pas.

Il sera presque certainement plus rapide d’enquêter, de comparer avec les autres scripts d’importation et de tenter de les implémenter que de créer 150 000 redirections manuellement.

2 « J'aime »

Vous devrez alors modifier ou payer quelqu’un pour modifier le script d’importation afin de créer les permaliens. Ce que vous essayez de faire est impossible. Les identifiants de sujet sont tous différents. Si vous avez déjà des utilisateurs qui utilisent la communauté maintenant, vous êtes soit malchanceux, soit vous devrez jeter leurs messages.

Oh. Désolé. Les import_ids devraient être dans la base de données. Vous pouvez écrire un script pour créer les permaliens. Vous devrez examiner certains des autres scripts d’importation pour en trouver un qui crée les redirections après l’importation des sujets plutôt que dans le cadre de la fonction d’importation de sujet.

3 « J'aime »

MVP ici même ! :man_superhero:

2 « J'aime »

Voici un exemple :

Il est parfois difficile d’obtenir le bon slug pour diverses raisons. Vous pouvez généralement faire quelque chose d’intelligent avec permalink_normalizations pour ignorer le slug et ne faire attention qu’à l’ID dans le Permalink.

4 « J'aime »