Я мигрирую с Vanilla на Discourse и мы решили начать с чистого листа, вместо импорта 8 лет тем. Текущий сайт — forums.29th.org, поэтому я планирую, когда Discourse будет полностью настроен, назначить discourse домену forums.29th.org, а Vanilla перенести на что-то вроде vanilla.29th.org (на самом деле мне сложно придумать удобное правило для URL, так как у нас уже несколько старых форумов!).
Поэтому я хотел бы перенаправлять запросы, соответствующие шаблону URL Vanilla, на другой домен. Это было бы очень просто сделать с помощью правила nginx, но (a) я хотел убедиться, возможно ли использовать встроенную функцию Discourse, например, постоянные ссылки (Permalinks), и (b) если нет, то как правильно редактировать конфигурацию nginx (было бы здорово, если бы я мог управлять её версионированием).
Я бы использовал правило 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: # эта строка уже должна присутствовать