기존 커뮤니티(macscripter.net - Mac OS 자동화 토론)를 FluxBB에서 Discourse로 이전하는 작업을 계획하고 있습니다. 데이터 이전 측면에서 이 글이 유망해 보입니다. 30,000명 이상의 사용자와 120,000개 이상의 게시물이 있어 큰 작업이 될 것 같지만, 불가능하지는 않아 보입니다.
다만, 모든 유입 링크를 보존하고 싶습니다. macscripter.net은 Apple 자동화 커뮤니티에서 중요한 참고 자료입니다. 거의 20년치 게시물이 있으며, 다른 사이트나 메일링 리스트 아카이브에서 이 사이트를 참조하는 링크가 많이 있습니다. 이러한 링크가 깨지는 것을 원하지 않습니다.
FluxBB 게시물의 유입 링크를 해당 Discourse 게시물로 변환하는 방법을 찾고 있습니다. 기본 Discourse에서는 이를 수행할 방법을 찾지 못했으므로, FluxBB의 /viewtopic.php?id=##### 링크에 응답하여 적절한 Discourse 링크로 리디렉션하는某种 플러그인을 만들어야 할 것 같습니다. 이 유형의 문제를 해결해 본 경험이 있는 분이 계신다면, 어떻게 접근했는지 듣고 싶습니다.
저도 같은 질문을 가지고 있고, 답변에 대해 조금 혼란스럽습니다. 저도 상당한 규모의 FluxBB 가져오기를 진행하려고 합니다.
실제로 Discourse에 "Permalinks"라는 기능이 있다는 것을 확인했습니다( https://meta.discourse.org/t/how-to-make-a-redirec t-url-in-a-discourse-install/40973/4 ). 따라서 이러한 것을 생성하면 Discourse가 "/viewtopic.php?id=((old topic id))"과 같은 FluxBB 스타일의 URL을 "/t/((new topic slug))/((new topic id))"로 리디렉션할 수 있다는 뜻이죠. 주제 내 개별 게시물에 대해서도 마찬가지일까요? 사용자 프로필 URL에 대해서도 마찬가지일까요. (즉, 수많은 Permalinks가 필요할 것입니다.) Permalinks를 위한 데이터베이스 테이블도 확인했습니다.
좋은 해결책처럼 들리지만, FluxBB 가져오기 도구가 Permalinks를 생성하지 않습니다. 그 관련 코드를 찾을 수 없습니다. 사실 import_scripts 중 어떤 코드에서도 이를 수행하는 코드를 찾을 수 없습니다( “Permalink” ActiveRecord 모델에 대한 언급이 전혀 없습니다).
FluxBB 가져오기 도구를 수정하여 이를 수행하는 작업을 진행할 의향이 있지만, 다른 가져오기 도구 중 예시가 있을까요?
이와 관련하여 코드에서 확인할 수 있는 유일한 것은 "LookupContainer"가 초기화되어 모든 구 ID와 해당 새 ID를 저장한다는 점입니다. 이를 사용하여 많은 수의 Permalink 객체를 생성할 수 있을까요?
vbulletin 가져오기 도구를 확인해 보세요(또는 answerhub, vanilla, mylittleforum, bbpress, drupal 등 다른 도구들도 참고해 보세요. 대소문자를 구분하여 grep을 수행했거나 다른 문제가 있을 수 있습니다). 이 도구는 import_topics 함수에서 이를 처리합니다(permalink 파일 함수는 무시하세요). 영구 링크를 추가하고, fluxbb URL을 생성한 영구 링크로 매핑하는 permalink_normalization 코드가 필요합니다.
아, 맞네. 내 IDE 검색이 나를 속이고 있었어. 사실 “Permalink” 객체가 생성되는 예제가 꽤 많아. 그러면 FluxBB 가져오기에 이 기능을 추가하는 걸 한번 검토해볼까.
@alldritt, 네가 진행한 대규모 가져오기는 어떻게 됐어? macscripter.net이 아직 FluxBB를 쓰고 있는 걸 보면, 잘 안 된 건가? fluxbb 가져오기 도구가 bbcode를 제대로 변환하지 못하는 걸 알아챘다면, 그 부분을 수정하기 위해 여러 가지 패치를 작업 중이야: 진행 중인 Pull request.
이 두 가지 토론 사이에 흥미롭고(어색한) 겹치는 부분이 있어. FluxBB는 [post=123] 형태의 bbcode를 지원해서 ID로 다른 게시물을 링크할 수 있거든(원본 FluxBB 시스템의 오래된 게시물 ID를 참조하는 경우). 만약 이러한 ID를 리다이렉트하는 해결책이 있다면, 이 문제를 처리하기가 훨씬 쉬워질 거야.
전환 작업을 몇 번 시도해 보았지만 결국 포기했습니다. 나중에 M1 Mac으로 넘어가면서 Discourse 테스트 환경을 잃어버렸고, 다시 재구성할 여유가 없었습니다. 시간이 나면 이 프로젝트에 다시 돌아가고 싶습니다. 기존 링크의 리디렉션 처리는 제가 고생했던 부분 중 하나였습니다. 모든 BBCode가 올바르게 변환되었는지 확인하는 작업까지 아직 못 해봤습니다. 변환해야 할 게시물이 13만 개가 넘어서 확인 작업이 만만치 않습니다.
이 내용이 도움이 되길 바랍니다. 어제 저는 FluxBB 가져오기(Importer)에 create_permlinks 기능을 추가하는 작업을 하고 있었습니다.
현재 이 작업은 제 WIP PR에 올라가 있습니다. “Add Permalink creation logic to FluxBB importer” 커밋을 이 목록의 끝에서 확인하실 수 있습니다. 언젠가 이 모든 것을 병합(Merge)하길 희망하며, 순서가 달라질 수도 있습니다(현재는 시작점으로 이 기본적인 PR에 대한 누군가의 리뷰를 기다리고 있습니다).
따라서 이 작업은 FluxBB URL의 네 가지 서로 다른 유형에 대한 리다이렉트를 생성합니다.
profile.php?id=<user id>
viewtopic.php?pid=<post id>
viewtopic.php?id=<topid id>
viewforum.php?id=<forum id>
이 네 가지 유형이 사람들이 작동하는 링크를 유지하고자 할 때 필요한 모든 것을 포괄한다고 생각합니다. 어떻게 생각하시나요?
FluxBB의 특수 내부 링크라는 주제로 다시 돌아가서,
저는 이 링크들을 새로운 Discourse 내에서 내부 링크로 유지하려 하지 않았습니다. 게으른 해결책은 다음과 같습니다: 이 링크들은 구 FluxBB 포럼 URL(외부 링크로서 전체 URL)로 연결되도록 합니다. 그리고 이 Permalinks 덕분에 사용자는 새로운 Discourse의 정확한 위치로 리다이렉트됩니다.