Балансировка индексации Google с ограничениями поиска по группам

Мы структурировали наш форум Discourse так, что видимость категорий строго контролируется группами. Наша цель — создать организованный и персонализированный опыт для авторизованных пользователей, при этом обеспечивая доступность публичного контента для SEO. Наша текущая настройка включает:

:check_mark: Доступ на основе групп — пользователи должны вступить в группу, чтобы увидеть определённые категории.
:check_mark: Отслеживаемые категории — при вступлении в группу пользователи автоматически начинают отслеживать связанные с ней категории.
:check_mark: Поведение заглушённых категорий — заглушённые категории должны быть свернуты по умолчанию.
:check_mark: Права доступа к поиску — авторизованные пользователи должны видеть только результаты поиска из категорий, к которым у них есть доступ.
:check_mark: Публичная видимость для SEO — незарегистрированные посетители (включая краулеров Google) должны видеть все категории и иметь возможность их индексировать.
:check_mark: Требование онбординга — новые пользователи должны выбрать группу перед началом участия.

Столкнувшиеся с нами проблемы

:small_blue_diamond: 1. Видимость категорий на основе групп работает не так, как ожидалось

  • Когда пользователь вступает в группу, ожидаемое поведение заключается в том, что категории группы должны появиться на главной странице и на странице категорий.
  • Однако это не происходит мгновенно — иногда категории вообще не отображаются или появляются только после прокрутки вниз.
  • Ранние созданные категории (например, Флеботомисты) работают корректно, тогда как недавно созданные (например, Судебный пристав) отображаются с задержкой или не появляются до ручной активации.
  • Пользователи часто видят только заглушённые категории вместо ожидаемых отслеживаемых/наблюдаемых категорий.
  • Временное решение: если пользователь вручную отключит заглушение хотя бы одной категории, остальные присоединённые категории начнут отображаться корректно.

:small_blue_diamond: 2. Результаты поиска показывают несвязанные категории

  • Авторизованные пользователи видят результаты поиска из категорий, к которым у них нет доступа.
  • Ожидаемое поведение: Discourse должен ограничивать результаты поиска только категориями, назначенными группе пользователя.
  • Наблюдаемое поведение: поиск всё ещё возвращает результаты из всех категорий, что означает, что пользователи могут видеть фрагменты контента, к которым у них технически нет доступа.
  • Связанное обсуждение: разговор на ask[.]discourse[.]com подтверждает, что Discourse должен ограничивать результаты поиска на основе прав доступа групп.

:small_blue_diamond: 3. SEO и краулинг Google против ограниченного доступа

  • Мы хотим, чтобы все категории индексировались Google, чтобы контент можно было найти в результатах поиска.
  • Однако мы не хотим, чтобы авторизованные пользователи видели все категории по умолчанию — только те, которые привязаны к выбранной ими группе.
  • Текущая проблема: если мы скрываем категорию от авторизованных пользователей, она также исчезает из Google, что делает её индексацию невозможной.
  • Идеальное решение: Google должен иметь возможность краулить и индексировать все категории, но результаты поиска для авторизованных пользователей должны по-прежнему ограничиваться правами доступа групп.

Вопросы к сообществу

:one: Как обеспечить немедленное появление присоединённых категорий и их отображение выше заглушённых?
:two: Как полностью обеспечить ограничение результатов поиска для авторизованных пользователей, сохраняя при этом видимость контента для SEO?
:three: Есть ли способ разрешить Google индексировать все публичные категории, одновременно скрывая их от авторизованных пользователей до вступления в группу?
:four: Какой лучший подход для принудительного выбора группы при регистрации, не блокируя при этом возможность публичных читателей находить контент?

Связанные обсуждения и ссылки

:pushpin: Доступ к категориям на основе групп работает не так, как ожидалось — Обсуждение задержек видимости категорий, переопределения настроек отслеживания заглушёнными категориями и проблем с поведением поиска.

:pushpin: [Результаты поиска ограничены правами доступа групп (ask[.]discourse[.]com)] — Подтверждает, что Discourse ограничивает результаты поиска на основе прав доступа групп, но нам нужен способ сбалансировать это с SEO.

:pushpin: Видео-демонстрация проблемы:

Отключение звука не является ограничением. Поскольку вы должны использовать everyone, чтобы показывать контент случайным пользователям и Google, то все ваши пользователи имеют доступ ко всем этим категориям, независимо от того, отключено ли у них звук, и они увидят правильные результаты поиска.

Если вы действительно используете ограничения по группам и при этом не пускаете незарегистрированных посетителей и Google в эти ограниченные категории, то это баг. Но я сомневаюсь в этом, потому что у меня (и на моем форуме) это работает.

Так что я ставлю на то, что вы используете everyone для чтения.

Спасибо @Jagster за ответ, я работаю над этим вместе с @emonunix.

Вот что мы пытаемся реализовать.

  • Мы хотим предоставить пользователям доступ к отдельной группе или группам с доступом к категориям.
  • Мы хотим скрыть все категории, которые не входят в эти группы.
  • Мы хотим, чтобы Google индексировал всё (все категории).

В настоящее время мы используем «отключение уведомлений» (muting) как способ скрыть категории от пользователей при посещении сайта. Чтобы получить доступ к категориям, они должны вступить в группу.

Теперь самое забавное: они знают только о наборе категорий в своей группе… они не могут «видеть» никакие другие категории (потому что они отключены).

Затем они начинают искать, теоретически информацию из категорий, к которым у них есть доступ, и вдруг видят кучу материалов из категорий, о существовании которых они даже не подозревали… это их сбивает с толку.

Есть ли способ этого добиться?

При этом каждый пользователь должен иметь доступ ко всем этим категориям и видеть их в результатах поиска.

Возможно, с помощью плагинов или других средств можно обойти это правило безопасности, но из коробки предоставить доступ к чему-то всем, одновременно означая, что это не предназначено для всех, не получится.

Правильно, @Jagster, именно поэтому мы и спрашиваем. Мы не знаем, был ли другой способ.

В идеале должна существовать возможность ограничить доступ для авторизованных пользователей только просмотром и поиском на X, в то время как неавторизованные пользователи (например, Google) смогут просматривать и получать доступ к Y.

Или, возможно, всё так же просто, как сделать скрытые категории недоступными в инструменте поиска… Или же это просто упущение в дизайне? Странно, что что-то скрыто от вашего просмотра, но при этом его можно найти через поиск… Это похоже на заднюю дверь.

«Muted» означает, что тема замолчала и не появляется в разделе /latest. Она не заблокирована. Чтобы скрыть что-то, нужно использовать группы, и тогда вы исключите Google. Как и должно быть, ведь в этом случае контент уже не является бесплатным.

Вы окажетесь в неловкой ситуации, когда зарегистрированный пользователь найдет что-то через Google, перейдет по ссылке и попадет на ваш форум — но в раздел с ограничениями. Что вы будете делать в таком случае:

  • заставить оформить подписку
  • заставить выйти из аккаунта и прочитать как гость
  • показать ошибку 403

Я до сих пор не понимаю ваших планов блокировать что-то для авторизованных пользователей, но при этом показывать всё случайным посетителям. Это как рекламировать то, что у вас есть, но если пользователь выберет не то, он этого не получит — или должен выйти из аккаунта. Большинство сайтов поступают наоборот :smirking_face:

Но нет. Muting — это не блокировка.