Как использовать динамические редиректы?

Я мигрирую с Vanilla на Discourse и мы решили начать с чистого листа, вместо импорта 8 лет тем. Текущий сайт — forums.29th.org, поэтому я планирую, когда Discourse будет полностью настроен, назначить discourse домену forums.29th.org, а Vanilla перенести на что-то вроде vanilla.29th.org (на самом деле мне сложно придумать удобное правило для URL, так как у нас уже несколько старых форумов!).

Поэтому я хотел бы перенаправлять запросы, соответствующие шаблону URL Vanilla, на другой домен. Это было бы очень просто сделать с помощью правила nginx, но (a) я хотел убедиться, возможно ли использовать встроенную функцию Discourse, например, постоянные ссылки (Permalinks), и (b) если нет, то как правильно редактировать конфигурацию nginx (было бы здорово, если бы я мог управлять её версионированием).

Для контекста, URL тем на Vanilla выглядят так:

/discussion/42206/example-topic#latest

Спасибо!

Я бы использовал правило nginx для перенаправления /discussion на новый/старый домен. (И я бы импортировал старые данные, но это, так сказать, способ, которым я зарабатываю на жизнь).

@pfaffman Спасибо, но как узнать, где редактировать правило nginx? Нужно ли выполнить launcher enter app и изменить файл в /etc/nginx/nginx.conf или что-то подобное? Предполагая, что это эфемерные контейнеры, я ожидал, что нужно редактировать что-то, что контролируется версионностью, — это возможно?

Вы можете добавлять настройки в app.yml, чтобы изменить конфигурацию nginx (или запустить внешнюю). Я не уверен, куда лучше отправить вам информацию. Вот пример внесения изменений в конфигурацию nginx для другой цели:

  after_ssl:
   # не перенаправлять все хосты обратно на основное доменное имя
    - 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;"

Отлично — это именно то, что мне нужно было увидеть. Спасибо! Где-то есть документация по таким вещам, которую я мог бы посмотреть?

Для тех, кто оказался здесь: я реализовал это, подключившись к серверу по SSH, перешёл в /var/discourse, открыл containers/app.yml в vim и прокрутил вниз до раздела hooks. Затем я добавил следующий фрагмент:

hooks: # эта строка уже должна присутствовать
  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: # эта строка уже должна присутствовать