를 참고하세요.SiteSettings.permalink_redirects
수정: 아, 영구 링크 정규화(Permalink normalizations)입니다.
를 참고하세요.SiteSettings.permalink_redirects
수정: 아, 영구 링크 정규화(Permalink normalizations)입니다.
/admin/site_settings/category/all_results에서 permalink_redirects를 검색하라는 말씀이신가요? 제 환경에서는 해당 설정이 존재하지 않습니다.
하지만 /^forum\/(view.*)/\1을 사용하여 permalink_normalizations는 어느 정도 작동합니다:
view로 시작합니다. 예를 들어 viewtopic.php나 viewforum.php와 같습니다. 실제로 저희 사례에서 마이그레이션된 URL은 이 두 개뿐인 것 같으므로, 정규식(Regex)을 더 엄격하게 만들거나 전체 경로 매칭을 위해 두 개로 나누는 것도 가능합니다.sed 문법)은 /forum/view로 시작하는 모든 URL에서 forum/ 부분을 제거합니다.이제 웹서버(또는 저희 경우의 Cloudflare)에서 모든 /phpbb/(구 포럼 경로)를 /forum/로 리다이렉트하기만 하면, 나머지는 Discourse가 처리합니다. 3년 전쯤에 이것을 찾아냈으면 모든 백링크가 깨지는 일이 없었을 텐데 참 아쉽습니다. ![]()
하지만 이 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의 리다이렉트 규칙을 통해 수행됩니다. 두 번째 리다이렉트(실제 토픽으로의 이동)는 Discourse에서 퍼머링크를 통해 처리되며, 퍼머링크 정규화를 통해 앞부분의 forum/를 제거하여 phpBB 가져오기 플러그인이 추가한 퍼머링크와 일치시킵니다. 이 퍼머링크에는 구 포럼 서브디렉터리 경로도, 새 포럼 서브디렉터리 경로도 포함되어 있지 않습니다.
죄송합니다. 제가 의도한 것은 그거였어요.
아니요. 그냥 그 경로에 대해 정규화(normalization)를 설정하세요.
이는 작동하지 않습니다. Discourse가 /forum에 위치해 있고 /phpbb에 대한 요청을 전혀 감지하지 않기 때문입니다. 이전 포럼 소프트웨어에서 가져올 경기와 일치하지 않는 서브 경로에 Discourse가 있는 경우, Discourse 경로로 리다이렉트(또는 프록시 이전의 rewrite)를 수행할 수밖에 없으며, 이를 통해 정규화가 효과적으로 적용됩니다.
맞습니다. 그 부분을 놓쳤네요. /phpbb를 /forum으로 리다이렉트해야 하고, 아마도 정규화(normalization) 설정도 조정해야 할 것입니다.
맞습니다. 하지만 실제로는 그리 어렵지 않았습니다: /^forum\/(view.*)/\1은 우리의 오래된 phpBB 영구 링크에 완벽하게 작동합니다. 설정에 따라 가져오기 플러그인이 viewforum.php와 viewtopic.php 외에 사용자 프로필 링크 같은 다른 영구 링크를 생성하는지 확실하지 않습니다.
사실 영구 링크를 스크롤하거나 탐색하거나 정렬할 수 있는 방법이 있으면 어떤 URL 스키마가 포함되어 있는지 더 잘 파악할 수 있을 텐데 좋겠습니다. 하지만 주제에서 벗어난 이야기이고, 검색 패턴을 반복 확인한 결과, 우리의 경우 위 두 개만 존재한다는 것에 확신을 갖게 되었습니다.
스크립트는 카테고리, 토픽, 게시글의 영구 링크만 처리하는 것 같습니다.
사용자 영구 링크를 생성하려고 하고, 기존 시스템의 사용자 프로필에 사용자 import_id가 포함되어 있다면, 콘솔에서 루비 코드를 조금만 작성하여 생성할 수 있습니다.
알아두면 좋습니다. 그리고 주제와 게시글 URL은 동일한 PHP 스크립트를 사용합니다. 따라서 의도하지 않은 정규화(nomalization)를 배제하기 위해, 제 정규식(regex)을 두 개로 나눌 수 있습니다:
/^forum\/(viewforum.php\?.*)/\1/^forum\/(viewtopic.php\?.*)/\1… 또는 /^forum\/(view(forum|topic).php\?.*)/\1을 사용할 수도 있는데, 성능 측면에서 미세한 차이가 있는지 확실하지 않습니다.
프로필 URL에는 어쨌든 백링크가 있는 경우가 거의 없습니다. 우리는 버그를 보고하거나 제안이 프로젝트에 채택된 사용자에게 릴리스 노트에서 크레딧을 부여하는 용도로 이 URL을 사용합니다. 하지만 그런 경우는 드물 거라고 생각합니다. 또한, 우리는 Discourse로 전환했을 때 릴리스 노트에 있는 링크들을 즉시 업데이트했습니다.