Como posso usar redirecionamentos dinâmicos?

Estou migrando do Vanilla para o Discourse e decidimos começar do zero em vez de importar 8 anos de tópicos. O site atual é forums.29th.org, então, quando o Discourse estiver totalmente operacional, pretendo tornar o Discourse o forums.29th.org e mover o Vanilla para outro lugar, como vanilla.29th.org (na verdade, estou com dificuldade para pensar em uma boa convenção de URL, pois temos vários fóruns antigos no momento!)

Então, gostaria de redirecionar solicitações que correspondam ao padrão de URL do Vanilla para o outro domínio. Isso seria muito fácil com uma regra do nginx, mas (a) queria verificar se é possível usar um recurso nativo do Discourse, como os Permalinks, e (b) se não for, queria saber como editar a configuração do nginx da maneira correta (seria ótimo se eu pudesse controlá-la por meio de versionamento de código).

Para contexto, as URLs dos tópicos do Vanilla são assim:

/discussion/42206/example-topic#latest

Obrigado!

Eu usaria uma regra do nginx para redirecionar /discussion para o domínio novo/antigo. (E eu importaria os dados antigos, mas, bem, é assim que eu ganho a vida)

@pfaffman Obrigado - mas como posso descobrir onde editar a regra do nginx? Preciso executar launcher enter app e modificar o arquivo em /etc/nginx/nginx.conf ou algo assim? Considerando que são containers efêmeros, eu esperaria editar algo controlado por versão - isso é possível?

Você pode adicionar coisas ao seu app.yml para modificar a configuração do nginx (ou executar uma externa). Não tenho certeza de qual é o melhor lugar para te enviar. Aqui está um exemplo de como fazer algumas alterações na configuração do nginx para outro propósito:

  after_ssl:
   # não redirecionar todos os hosts de volta para o nome de domínio 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;"

Perfeito – é exatamente o que eu precisava ver. Obrigado! Esse tipo de coisa está documentado em algum lugar que eu poderia ter consultado?

Para qualquer outra pessoa que esteja chegando aqui, implementei isso fazendo SSH no meu servidor, navegando até /var/discourse, abrindo containers/app.yml com o vim e descendo até a seção hooks. Em seguida, adicionei este trecho:

hooks: # esta linha já deve estar 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: # esta linha já deve estar lá