@codinghorror와 마찬가지로, 저도 Ghost에서 이 Discourse 통합을 사용하고 있습니다. 기본 설정을 따르고 있는데, 이 설정은 절대 URL을 discourseEmbedURL로 사용합니다.
한 주 정도 전에, Ghost 블로그의 라우팅을 변경하기로 결정했습니다. https://engineerworkshop.com/2020/02/20/how-to-set-up-wireguard-on-a-raspberry-pi/와 같은 URL의 게시물이 https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/로 리다이렉트되도록 변경했으며, https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/가 새로운 영구 링크(permalink)가 되었습니다.
문제
이로 인해 발생할 수 있는 문제는 이미 예상하셨을 것입니다: discourseEmbedURL은 여전히 구 URL로 설정되어 있기 때문에, 이제 URL이 달라진 임베드 스크립트가 호출될 때 Discourse에서 새로운 댓글 게시물이 생성됩니다.
해결 시도 (실패)
사전에 이 문제를 예상했기 때문에, 정규식 패턴과 remap을 사용하여 URL을 수정하는 것이 교묘한 방법이라고 생각했습니다: rake posts:remap["[0-9]{4}\/[0-9]{2}\/[0-9]{2}","blog",regex]
이 방식이 "어느 정도"는 작동했지만, 불행히도 원래의 Discourse 댓글 게시물에서 URL이 사용된 위치는 그대로였으며, 블로그 게시물을 로드할 때마다 Discourse에서 새로운 댓글 토픽이 생성되었습니다.
결국 사이트의 모든 게시물을 다시 로드하고, 구 토픽의 댓글을 새로운 토픽으로 이동한 뒤 원래 토픽을 삭제했습니다 (아는 사람 다 압니다). 물론 페이지를 삭제하는 것은 SEO에 좋지 않을 뿐만 아니라 사용자 경험에도 해롭습니다.
제 질문
제 정규식 패치 시도가 작동하지 않은 이유는 Discourse 토픽이 백엔드에서 URL에 어떻게든 키(key)가 지정되어 있기 때문이라고 추정합니다. (Discourse의 데이터 구조에 대해 무지하다는 점을 readily 인정합니다). 향후를 위해, 그리고 미래에 동일한 작업을 시도할 수 있는 다른 사람들을 위해, Discourse 토픽을 새로운 블로그 게시물 URL로 재매핑할 수 있는 방법이 있을까요?
미리 감사드립니다!