Migrate a phpBB3 forum to Discourse

Смотрите SiteSettings.permalink_redirects

Редактирование: ой. Нормализация постоянных ссылок

Вы имеете в виду поиск permalink_redirects в /admin/site_settings/category/all_results? Для меня этой настройки не существует.

Однако permalink_normalizations работает отчасти: используя /^forum\/(view.*)/\1:

  • Все ссылки phpBB начинаются с view, например viewtopic.php и viewforum.php. На самом деле, в нашем случае мигрированы, похоже, только эти два URL, поэтому регулярное выражение можно усилить или разбить на два для полного сопоставления путей.
  • Таким образом, это регулярное выражение (синтаксис sed) берёт все URL, начинающиеся с /forum/view, и удаляет часть forum/.

Теперь нам остаётся только перенаправить все /phpbb/ (наш старый путь форума) на /forum/ на уровне веб-сервера (или Cloudflare в нашем случае), а остальное сделает Discourse. Надо было найти это около 3 лет назад, вместо того чтобы сломать все обратные ссылки :smiling_face_with_tear:.

Но скажите, где должна находиться эта настройка permalink_redirects? Возможно, для неё требуется плагин, или она была частью плагина импорта phpBB?

РЕДАКТИРОВАНИЕ: Работает отлично:

root@micha:~# curl -IL https://dietpi.com/phpbb/viewtopic.php?p=46083
HTTP/2 301
location: /forum/viewtopic.php?p=46083

HTTP/2 301
location: https://dietpi.com/forum/t/is-there-a-simple-launch-page-for-dietpi/11237/1
x-discourse-route: permalinks/show

HTTP/2 200
x-discourse-route: topics/show

Первое перенаправление /phpbb => /forum происходит в Cloudflare через правило перенаправления, чтобы снять лишнюю нагрузку с нашего origin. Второе перенаправление на саму тему выполняется в Discourse через пермалинк, удаляя начальный forum/ посредством нормализации пермалинков, чтобы соответствовать пермалинкам, добавленным плагином импорта phpBB, которые не содержат ни старого, ни нового подкаталога форума.

Извините. Именно это я и имел в виду.

Нет. Просто настройте нормализацию для этого пути.

Это не сработает, так как Discourse размещается по адресу /forum и не видит запросов к /phpbb. При установке Discourse на подпуть, который не совпадает с путем предыдущего программного обеспечения форума для импорта, невозможно обойтись без перенаправления (или переписывания перед прокси) на путь Discourse, чтобы его нормализация начала действовать.

1 лайк

Верно. Я упустил это. Вам нужно перенаправить /phpbb на /forum, и, вероятно, всё ещё придётся возиться с нормализацией.

Верно, но это действительно оказалось не так сложно: /^forum\/(view.*)/\1 отлично работает для наших старых постоянных ссылок phpBB. Не уверен, что в зависимости от настроек плагин импорта может генерировать другие постоянные ссылки, помимо viewforum.php и viewtopic.php, например, ссылки на профили пользователей или что-то подобное?

Было бы действительно удобно иметь возможность прокручивать, просматривать или сортировать постоянные ссылки, чтобы лучше понимать, какие схемы URL в них содержатся. Но в стандартной конфигурации и после перебора всех шаблонов поиска я уверен, что в нашем случае существуют только две вышеупомянутые ссылки.

Похоже, скрипт работает только с категориями, темами и постоянными ссылками на посты.

Если вы хотите создать постоянные ссылки для пользователей, а в старой системе профили пользователей включают import_id пользователя, то вы можете создать их с помощью небольшого скрипта на Ruby в консоли.

1 лайк

Хорошо, что это известно. Кроме того, URL-адреса тем и постов используют один и тот же PHP-скрипт. Чтобы исключить любое нежелательное нормализование, мое регулярное выражение можно разделить на два:

  1. /^forum\/(viewforum.php\?.*)/\1 для категорий
  2. /^forum\/(viewtopic.php\?.*)/\1 для тем и постов

… или /^forum\/(view(forum|topic).php\?.*)/\1, не уверен, есть ли какая-либо незначительная разница в производительности.

URL-адреса профилей в любом случае вряд ли будут иметь обратные ссылки. Мы используем их, чтобы благодарить пользователей, которые сообщали об ошибках или чьи предложения были учтены в нашем проекте, в наших примечаниях к выпуску. Но это, думаю, редкий случай, и ссылки в наших примечаниях к выпуску были обновлены сразу после перехода на Discourse.

1 лайк