Comment utiliser les redirections dynamiques ?

Je migre de Vanilla vers Discourse, et nous avons décidé de repartir de zéro plutôt que d’importer 8 ans de sujets. Le site actuel est forums.29th.org, donc je pense que, une fois Discourse pleinement opérationnel, je ferai de discourse l’adresse forums.29th.org et je déplacerai Vanilla vers autre chose, comme vanilla.29th.org (en fait, je peine à trouver une bonne convention d’URL, car nous avons plusieurs anciens forums à ce stade !)

Je souhaiterais donc rediriger les requêtes correspondant au modèle d’URL de Vanilla vers l’autre domaine. Ce serait très simple avec une règle nginx, mais (a) je voulais vérifier s’il était possible d’utiliser une fonctionnalité intégrée de Discourse, comme les permaliens, et (b) si ce n’est pas le cas, je voulais demander comment modifier correctement la configuration nginx (il serait idéal de pouvoir la versionner également).

Pour le contexte, les URLs des sujets Vanilla ressemblent à ceci :

/discussion/42206/example-topic#latest

Merci !

J’utiliserais une règle nginx pour rediriger /discussion vers le nouveau/ancien domaine. (Et j’importerais les anciennes données, mais c’est ainsi que je gagne ma vie)

@pfaffman Merci, mais comment puis-je savoir où modifier la règle nginx ? Dois-je exécuter launcher enter app et modifier le fichier /etc/nginx/nginx.conf ou quelque chose de similaire ? En supposant qu’il s’agisse de conteneurs éphémères, je m’attendais à pouvoir modifier un élément versionné – est-ce possible ?

Vous pouvez ajouter des éléments à votre app.yml pour modifier la configuration nginx (ou en exécuter une externe). Je ne suis pas sûr de savoir où il est préférable de vous envoyer. Voici un exemple de modification de la configuration nginx dans un autre but :

  after_ssl:
   # ne pas rediriger tous les hôtes vers le nom de domaine principal
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /if \(\$http_host[^\}]*\}/m
        to: ""
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301.*$/
        to: "return 301 https://$host$request_uri;"

Parfait, c’est exactement ce dont j’avais besoin. Merci ! Est-ce que ce genre de chose est documenté quelque part où j’aurais pu regarder ?

1 « J'aime »

Pour toute autre personne atterrissant ici, je l’ai mis en œuvre en me connectant via SSH à mon serveur, en naviguant vers /var/discourse, en ouvrant containers/app.yml avec vim et en faisant défiler jusqu’à la section hooks. J’ai ensuite ajouté ce morceau :

hooks: # cette ligne devrait déjà être là
  after_ssl:
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: "location @discourse {"
        to: |
          location /discussion/ {
            return 301 https://vanilla.29th.org$request_uri;
          }

          location @discourse {
  after_code: # cette ligne devrait déjà être là
1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.