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

**URL:** https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297
**Category:** Self-hosting
**Created:** [06.Август.2022 09:10:28 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297 "2022-08-06T09:10:28Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 09:10:28 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/1 "2022-08-06T09:10:28Z")

</div>

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

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

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

Flarum: [https://testdiscourse.com/d/123123-asdasd](https://testdiscourse.com/d/123123-asdasd)  
Discourse: [https://testdiscourse.com/t/asdasd/123123](https://testdiscourse.com/t/asdasd/123123)

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

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [06.Август.2022 11:36:02 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/2 "2022-08-06T11:36:02Z")

</div>

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

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

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

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

```

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

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

```plaintext
cd /var/discourse
./launcher enter app

```

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

---

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 13:35:02 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/3 "2022-08-06T13:35:02Z")

</div>

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

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

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [06.Август.2022 14:10:40 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/4 "2022-08-06T14:10:40Z")

</div>

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

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

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

---

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 15:02:50 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/5 "2022-08-06T15:02:50Z")

</div>

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

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

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

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

[https://testdiscourse.com/d/123123-asda-asdasd-adas](https://testdiscourse.com/d/123123-asda-asdasd-adas)

[https://testdiscourse.com/t/asda-asdasd-adas](https://testdiscourse.com/t/asda-asdasd-adas)

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [06.Август.2022 15:17:51 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/6 "2022-08-06T15:17:51Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 15:19:34 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/7 "2022-08-06T15:19:34Z")

</div>

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

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

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

> [@Redirect URL with Nginx in Digital Ocean](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297):
>
> I have a ready-made Discourse setup on Digital Ocean. I want to redirect from Flarum to Discourse but I couldn’t find the nginx folder. I looked in /etc/ - /usr/ folders but couldn’t find it. I can’t find it because Docker is used? Can I redirect with regex through the admin interface? Flarum: [https://testdiscourse.com/d/123123-asdasd](https://testdiscourse.com/d/123123-asdasd) Discourse : [https://testdiscourse.com/t/asdasd/123123](https://testdiscourse.com/t/asdasd/123123) I want to redirect as above, but I couldn’t find the nginx folder. I would be glad if you help. Also, …

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [06.Август.2022 15:20:21 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/8 "2022-08-06T15:20:21Z")

</div>

`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/` это сработает, но будет менее надёжным

---

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 15:22:30 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/9 "2022-08-06T15:22:30Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [06.Август.2022 15:23:12 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/10 "2022-08-06T15:23:12Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Alshain](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alshain/32/268446_2.png) [@Alshain](https://meta.discourse.org/u/Alshain)
#### Post date: [06.Август.2022 15:24:36 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/11 "2022-08-06T15:24:36Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [06.Август.2022 15:33:57 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/12 "2022-08-06T15:33:57Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [06.Август.2022 21:47:57 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/13 "2022-08-06T21:47:57Z")

</div>

> [@Alshain](#):
>
> Буду очень признателен, если вы сможете помочь. Вопросов более 150 000, и я не хочу пытаться просмотреть их все ☹

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

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

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [07.Август.2022 00:33:23 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/14 "2022-08-07T00:33:23Z")

</div>

> [@Jay Pfaffman](#):
>
> Идентификаторы импорта должны быть в базе данных. Вы можете написать скрипт для создания постоянных ссылок. Вам нужно посмотреть на другие скрипты импорта, чтобы найти тот, который создаёт редиректы после импорта тем, а не в рамках функции импорта темы.

Вот настоящий MVP! 🦸‍♂️

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [07.Август.2022 11:13:01 UTC](https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/235297/15 "2022-08-07T11:13:01Z")

</div>

Вот пример:

> <https://github.com/discourse/discourse/blob/main/script/import_scripts/answerhub.rb#L474-L487>

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