Перенаправление URL с Nginx в Digital Ocean

У меня уже настроен Discourse на Digital Ocean.
Я хочу настроить перенаправление с Flarum на Discourse, но не могу найти папку nginx.

Я искал в папках /etc/ и /usr/, но не нашёл её. Неужели это связано с использованием Docker?

Можно ли настроить перенаправление через админ-панель с помощью регулярных выражений?

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

Мне нужно настроить перенаправление именно в таком формате, но я не могу найти папку nginx. Буду благодарен за помощь.
Также, если вы сможете поделиться кодом регулярных выражений, это было бы здорово :slight_smile:

Вы выполнили стандартную установку или Flarum работает на том же хосте, что и Discourse?

Вы использовали скрипт миграции Flarum для импорта ваших данных? Судя по всему, скрипт Flarum не обрабатывает перенаправления постоянных ссылок (permalink). Я не могу представить, как предложенное вами перенаправление могло бы работать, если только вы каким-то образом не обеспечили совпадение идентификаторов тем в Discourse с идентификаторами в Flarum.

Если вы всё же сделали это, существует настройка сайта permalink normalization, которая выполнит то, что вы предлагаете. Она может выглядеть примерно так:

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

Однако секцию asdasd можно заменить на -, так как слаг игнорируется при маршрутизации.

nginx находится внутри контейнера Docker. Вы можете зайти в него, выполнив:

cd /var/discourse
./launcher enter app

Изменения, внесённые там, будут уничтожены при сборке нового контейнера. Однако можно внести изменения в ваш файл app.yml, которые будут модифицировать конфигурацию nginx в контейнере при создании нового. Вы можете посмотреть примеры в шаблонах по пути /var/discourse/templates.

Я зашел в Docker командой ./launcher enter app.
Это в nginx :slight_smile: Извините, я новичок.

Какой файл нужно настроить в nginx? У вас есть знания по этой теме?

Имя домена и т.д. — обычно это указывается в этом файле?

Оптимальное решение в данном случае — обновить скрипт миграции, чтобы перенаправления постоянных ссылок создавались автоматически.

Не настраивайте nginx напрямую, так как эти изменения будут удалены при каждой пересборке контейнера для обновления.

Вместо этого, как отмечает @pfaffman, отредактируйте файл app.yml, чтобы изменить конфигурацию nginx.

Я вношу изменения в app.yml, но как именно следует настроить перенаправление? :frowning:

Буду очень признателен за помощь. У нас более 150 000 вопросов, и я не хочу перебирать их все :frowning:

Раньше я никогда не сталкивался с таким перенаправлением, и по моим исследованиям в интернете я не нашёл много информации.

Когда я настраиваю перенаправление через rewrite, мне нужно следующее:

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

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

Мне даже не нужен 123123. Как это можно сделать?

Вашему назначению требуется идентификатор темы; заглушка необязательна.

Разве недостаточно наличия слайг-секции?

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

Например, при нажатии на ссылку выше открывается эта страница:

Таким образом, писать номер 235297 не нужно.

https://meta.discourse.org/t/cake/235297/ заглушка не влияет на перенаправление — перед ID может быть что угодно

https://meta.discourse.org/t/235297/ заглушку можно вообще убрать

https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/ это сработает, но будет менее надёжным

Поскольку значения id в Flarum и здесь различаются, для меня достаточно значений slug.

Жаль, что приходится обрабатывать 150 000 вопросов по одному. Я очень устал :slight_smile:

Вот почему исправление скрипта импорта — самое простое решение

В скрипте импорта не было опции перенаправления постоянных ссылок, но :frowning: Я тоже новичок в языке Ruby и PostgreSQL. Я бы с радостью, но не могу.

Скорее всего, будет гораздо быстрее изучить и сравнить с другими скриптами импорта, а затем попытаться реализовать их, чем вручную создавать 150 000 перенаправлений.

Тогда вам нужно изменить скрипт импорта или нанять кого-то для его изменения, чтобы создать постоянные ссылки. То, что вы пытаетесь сделать, невозможно. ID тем все разные. Если у вас уже есть пользователи, использующие сообщество сейчас, вам либо не повезло, либо придется удалить их сообщения.

О, извините. import_ids должны быть в базе данных. Вы можете написать скрипт для создания постоянных ссылок. Вам нужно посмотреть на другие скрипты импорта, чтобы найти тот, который создает перенаправления после импорта тем, а не в рамках функции импорта темы.

Вот настоящий MVP! :man_superhero:

Вот пример:

Иногда по разным причинам сложно получить правильный слаг. Обычно можно использовать хитрость с permalink_normalizations, чтобы игнорировать слаг и обращать внимание только на ID в пермалинке.