수정: 아래 답변 덕분에 문제를 파악하여 제목을 그에 맞게 변경했습니다
마이그레이션 작업 중 영구 링크(permalinks)에서 이상한 동작이 발생하고 있습니다.
제 문제는 내부 링크가 리다이렉트되지 않는 문제가 아닙니다. 브라우저 주소창에 URL을 직접 붙여넣어 테스트하고 있을 뿐입니다.
테스트에서 발생해야 하는 두 가지 리다이렉트는 다음과 같습니다:
이것은 게시물(post) 리다이렉트로, 다음과 같이 두 번째 게시물로 리다이렉트되어야 합니다:
이것은 토픽(topic) 리다이렉트로, 다음 주소로 이동해야 합니다:
제 정규화(normalization)가 정상적으로 작동하고 있다는 것은 알고 있습니다. 제 정규식(regexp)은 다음과 같습니다:
/(?:.*)(\/)(?<topicid>\d*.)-(.[^\/#\?]*)(?<parm>\?(\w*)[=](?<start>\d+))?(?:\/)?(\D+(\/)?)?(?<postid>\d+)?(?:\/)?/normalized.\k<topicid>.\k<postid>
그리고 rails 콘솔에서 확인했습니다:
irb(main):069:0> Permalink.normalize_url('https://community.suitecrm.com/languages/17978-why-two-italian-language-packs#16249')
=> "normalized.17978.16249"
irb(main):068:0> Permalink.normalize_url('https://community.suitecrm.com/languages/17978-why-two-italian-language-packs')
=> "normalized.17978."
제가 의도한 결과입니다. Permalinks 테이블에는 다음과 같은 데이터가 있습니다:
데이터베이스에서 보이는 모습은 다음과 같습니다:
하지만 브라우저 URL에 이 주소를 입력하면
다음 주소로 리다이렉트됩니다:
원래 있어야 할 주소인
이 아닙니다.
그래서 첫 번째 게시물이 표시되고, 두 번째 게시물로 스크롤되지 않습니다.
제 정규화 과정에서 제거되었는데 왜 그 #16249 해시(hash)가 다시 추가되는 걸까요?
이 불일치를 드러내는 또 다른 방법(조금 인위적이긴 하지만)은 브라우저 주소창에서 다음 리다이렉트를 시도해 보는 것입니다:
https://community.suitecrm.com/normalized.17978.
정상적으로 다음으로 리다이렉트됩니다:
Reports disappeared - 💬 General Discussion - SuiteCRM
그리고 Why two Italian language packs? - #2 by roberto - Translation and Language Packs - SuiteCRM
정상적으로 다음으로 리다이렉트됩니다:
Reports disappeared - #2 by erevodifosin - 💬 General Discussion - SuiteCRM
그런데 왜 정상적인 프로세스를 거칠 때는 작동하지 않는 걸까요?


