Пакетный импорт редиректов в новые темы Discourse

Всем привет,

Недавно мне удалось успешно перенести мой сайт со старой кастомной платформы на Discourse. Однако теперь я столкнулся с проблемой импорта постоянных ссылок/редиректов на новые темы Discourse. У меня есть ID всех постов, созданных в Discourse, и я изучаю варианты импорта этих редиректов через API или командную строку, так как ручной импорт из-за большого объёма данных нецелесообразен.

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

Заранее спасибо!

Если ваша миграция основана на скрипте импорта, то темы (и, вероятно, сообщения) содержат пользовательское поле import_id. Затем вы можете использовать эти пользовательские поля, постоянные ссылки и SiteSetting.permalink_normalizations для создания редиректов.

Вы можете протестировать это в Rails с помощью чего-то вроде

tcfs=TopicCustomField.where(name: 'import_id')
pcfs=PostCustomField.where(name: 'import_id')

Если у вас их нет, то это будет действительно сложно.

Если они у вас есть, то вы можете сделать что-то вроде

tcfs.each do |tcf|
  Permalink.create(url: "imported-topic/#{tcf.value}", topic_id: tcf.topic_id)
end

А затем создать PermalinkNormalization, который будет перенаправлять путь для тем на /imported-topic/IMPORTED_ID.

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

Спасибо, Джей, за ваш ответ. Вместо использования скрипта импорта для миграции я выбрал интеграцию через API из-за нестандартной структуры. Я разработал скрипт на Python для импорта постов через API и успешно получил новые ID тем для каждой темы. Несмотря на то, что я импортировал старые URL с новыми ID тем/URL на примерно 6000 страницах, ни одно из сопоставлений не работает как ожидалось. Не могли бы вы подсказать, что я мог упустить, и как исправить эту проблему? Ваша консультация была бы очень полезна.