그룹 기반 검색 제한과 Google 인덱싱의 균형 맞추기

우리는 Discourse 포럼의 카테고리 가시성을 그룹에 의해 엄격하게 제어되도록 구성했습니다. 우리의 목표는 로그인한 사용자에게 조직적이고 개인화된 경험을 제공하면서, SEO 목적을 위해 공개 콘텐츠가 여전히 접근 가능하도록 하는 것입니다. 현재 설정에는 다음이 포함됩니다:

:check_mark: 그룹 기반 액세스 – 사용자는 특정 카테고리를 보려면 그룹에 가입해야 합니다.
:check_mark: 트래킹된 카테고리 – 그룹에 가입하면 해당 그룹에 연결된 카테고리가 자동으로 트래킹됩니다.
:check_mark: 음소거된 카테고리 동작 – 음소거된 카테고리는 기본적으로 접힌 상태로 표시되어야 합니다.
:check_mark: 검색 권한 – 로그인한 사용자는 액세스 권한이 있는 카테고리에서만 검색 결과를 확인해야 합니다.
:check_mark: SEO를 위한 공개 가시성 – 로그인하지 않은 방문자(구글 크롤러 포함)는 모든 카테고리를 보고 이를 인덱싱할 수 있어야 합니다.
:check_mark: 온보딩 요구 사항 – 신규 사용자는 참여하기 전에 그룹을 선택해야 합니다.

현재 직면한 문제들

:small_blue_diamond: 1. 그룹 기반 카테고리 가시성이 예상대로 작동하지 않음

  • 사용자가 그룹에 가입하면 예상되는 동작은 해당 그룹의 카테고리가 홈 페이지와 카테고리 페이지에 표시되는 것입니다.
  • 그러나 이는 즉시 발생하지 않습니다 – 때로는 카테고리가 아예 표시되지 않거나, 아래로 스크롤한 후에만 나타납니다.
  • 이전에 생성된 카테고리(예: Phlebotomists)는 정상적으로 작동하지만, 새로 생성된 카테고리(예: Bailiff)는 표시되는데 시간이 더 걸리거나 수동으로 트리거하지 않으면 나타나지 않습니다.
  • 사용자는 예상되는 트래킹/관심 등록 카테고리가 아닌 음소거된 카테고리만 보는 경우가 많습니다.
  • 임시 해결책: 사용자가 수동으로 최소 한 개의 카테고리를 음소거 해제하면, 다른 가입한 카테고리가 정상적으로 표시되기 시작합니다.

:small_blue_diamond: 2. 검색 결과에 관련 없는 카테고리가 표시됨

  • 로그인한 사용자는 액세스 권한이 없는 카테고리의 검색 결과를 보고 있습니다.
  • 예상되는 동작: Discourse는 검색 결과를 사용자의 그룹에 할당된 카테고리만으로 제한해야 합니다.
  • 관찰된 동작: 검색은 여전히 모든 카테고리에서 결과를 반환하고 있어, 사용자는 기술적으로 액세스할 수 없어야 하는 콘텐츠의 조각을 볼 수 있습니다.
  • 관련 토론: ask[.]discourse[.]com의 토론에서 Discourse가 그룹 권한에 기반하여 검색 결과를 제한해야 함을 확인해 주었습니다.

:small_blue_diamond: 3. SEO 및 구글 크롤링 vs 제한된 액세스

  • 우리는 모든 카테고리가 구글에 인덱싱되어 검색 결과에서 콘텐츠가 발견되기를 원합니다.
  • 그러나 로그인한 사용자가 기본적으로 모든 카테고리를 보는 것은 원하지 않습니다 – 선택한 그룹과 연결된 카테고리만 보아야 합니다.
  • 현재 문제: 카테고리를 로그인한 사용자로부터 숨기면 구글에서도 사라져 인덱싱이 불가능해집니다.
  • 이상적인 해결책: 구글은 모든 카테고리를 크롤링하고 인덱싱할 수 있어야 하지만, 로그인한 사용자를 위한 검색 결과는 여전히 그룹 권한에 기반하여 제한되어야 합니다.

커뮤니티에 대한 질문

:one: 가입한 카테고리가 즉시 표시되고 음소거된 카테고리보다 위에 오도록 어떻게 보장할 수 있을까요?
:two: 콘텐츠를 SEO를 위해 가시적으로 유지하면서 로그인한 사용자의 검색 결과 제한을 완전히 강제하는 방법은 무엇인가요?
:three: 사용자가 그룹에 가입할 때까지 로그인한 사용자로부터 카테고리를 숨기면서도 구글이 모든 공개 카테고리를 인덱싱할 수 있게 하는 방법이 있을까요?
:four: 공개 독자가 콘텐츠를 발견하는 것을 막지 않으면서 가입 시 그룹 선택을 강제하는 최선의 접근법은 무엇인가요?

관련 토론 및 참고 자료

:pushpin: Group-Based Category Access Not Working as Expected – 카테고리 가시성 지연, 트래킹 설정을 무시하는 음소거 카테고리, 검색 동작 문제에 대한 토론.

:pushpin: [Search Results Limited by Group Permissions (ask[.]discourse[.]com)] – Discourse가 그룹 권한에 기반하여 검색 결과를 제한한다는 것을 확인하지만, 이를 SEO와 균형 있게 맞추는 방법을 찾아야 합니다.

:pushpin: 문제 시연 비디오:

음소거(Muting)는 제한이 아닙니다. 랜덤한 방문자와 Google에게 콘텐츠를 표시하려면 everyone을 사용해야 하므로, 음소거를 했든 아니든 모든 사용자는 해당 카테고리 전체에 접근할 수 있으며, 검색 결과도 그대로 표시됩니다.

만약 실제로 그룹 제한을 사용하고 있으면서도, 로그인하지 않은 방문자와 Google을 해당 제한된 카테고리에서 차단하고 있다면 이는 버그일 수 있습니다. 하지만 제 환경(그리고 제 포럼)에서는 정상적으로 작동하므로 그렇게 생각하기 어렵습니다.

따라서 제 추측은 읽기 권한에 everyone을 사용하고 있다는 것입니다.

답변해 주셔서 감사합니다, @Jagster. @emonunix와 함께 이 문제를 해결하고 있습니다.

우리가 달성하려는 목표는 다음과 같습니다.

  • 사용자에게 카테고리 접근 권한이 있는 개별 그룹/그룹들에 대한 액세스 권한을 부여하고 싶습니다.
  • 이러한 그룹/그룹에 속하지 않는 모든 카테고리를 숨기고 싶습니다.
  • 구글이 모든 것(모든 카테고리)을 인덱싱하도록 하고 싶습니다.

현재 웹사이트에 방문한 사용자에게 카테고리를 숨기는 방법으로 '뮤팅(muting)'을 사용하고 있습니다. 사용자는 카테고리에 액세스하려면 그룹에 가입해야 합니다.

여기서 재미있는 점은, 그들은 자신의 그룹에 속한 카테고리 세트만 인식한다는 것입니다… 그들은 다른 어떤 카테고리도 ‘볼 수’ 없습니다(뮤팅되어 있기 때문에).

그런데 검색을 시작하면, 이론적으로는 접근 권한이 있는 카테고리 안의 내용을 찾게 되는데, 갑자기 존재하는지 몰랐던 카테고리에서 온 수많은 내용이 보이게 됩니다… 이것이 사용들을 혼란스럽게 하고 있습니다.

이것을 달성할 방법이 있을까요?

동시에 모든 사용자가 해당 카테고리에 모두 접근할 수 있고, 검색 결과에서 이를 볼 수 있습니다.

아마도 플러그인이나 기타 방법으로 그 기본적인 보안 규칙을 깨뜨릴 수는 있겠지만, 기본적으로 모든 사람에게 무언가를 허용한다는 것은 동시에 그 무언가가 모든 사람을 위한 것이 아님을 의미하므로, 그런 일은 일어나지 않을 것입니다.

@Jagster 맞아요, 바로 그 이유 때문에 질문드리는 겁니다. 다른 방법이 있었는지는 잘 모르겠어요.

이상적으로는 로그인한 사용자는 X에서 열람과 검색만 할 수 있고, 로그아웃 상태의 사용자(즉, Google)는 Y를 열람하고 접근할 수 있도록 하는 방식이 좋을 것 같아요.

아니면, 음소거된 카테고리를 검색 도구에서 접근할 수 없도록 하는 것만으로 충분한 걸 수도 있고요… 아니면 그냥 디자인상의 과실인 걸까요? 내 화면에서는 음소거된 내용인데, 검색을 통해 찾을 수 있다니 좀 이상하잖아요… 마치 백도어 같은 느낌이네요.

Muted(음소거) 상태란 조용히 하고 /latest에 팝업으로 뜨지 않는다는 뜻입니다. 차단(Block)과는 다릅니다. 무언가를 숨기려면 그룹을 사용해야 하며, 그렇게 해야 구글을 차단할 수 있습니다. 그렇게 해야 하는 이유는 그 시점부터 해당 콘텐츠가 더 이상 무료가 아니기 때문입니다.

회원 검색(registrate user seach)을 통해 구글에서 무언가를 찾아내고 클릭해서 포럼에 도착했는데, 제한된 카테고리에 있는 경우를 생각해 보세요. 그 시점에서 무엇을 하시겠습니까?

  • 구독을 강제한다
  • 로그아웃을 강제하고 일반 방문자로 읽게 한다
  • 403 에러를 표시한다

로그인된 사용자에게는 차단하되, 아무에게나(비로그인)에게는 모든 것을 보여주는 계획이 아직 이해가 되지 않습니다. 마치 가지고 있는 것을 광고하면서, 사용자가 올바른 선택을 하지 않으면 그 내용을 얻지 못하거나 — 또는 로그아웃해야 한다는 것과 같습니다. 대부분의 사이트는 정반대를 합니다 :smirking_face:

하지만 아닙니다. 음소거(Muting)는 차단(Block)이 아닙니다.