Удаление ссылок /2, /3, /4 и т.д. для каждого ответа в URL темы

Интересует, можно ли полностью убрать канонические ссылки из форума Discourse.

Речь идёт о расширениях /2, /3, /4 и т. д., которые появляются в URL каждой темы, когда пользователь прокручивает страницу вниз. Я хотел бы, чтобы каждый ответ в теме ссылался просто на исходный URL (без перенаправления посетителей на оригинальный URL, а именно — полностью удалив эти пути, чтобы они вообще не существовали).

Сначала мне казалось, что это крутая функция Discourse, но за последний год, ведя похожий форум на NodeBB (который использует ту же функцию канонических ссылок для каждого ответа), мы обнаружили, что такая функциональность может быть катастрофической для SEO публичного форума.

Почему? Хотя эти URL с расширениями /2, /3, /4 являются каноническими ссылками, Google в конечном итоге просканирует и проиндексирует их все. Это означает, что каждый новый ответ в теме может появиться в результатах поиска Google. Поскольку это по сути дубликаты исходного URL темы, эти дополнительные проиндексированные страницы редко получают посещения, а когда всё же получают, посетители не задерживаются на сайте дольше нескольких секунд.

Когда Google индексирует множество дополнительных страниц, которые почти не используются, это сигнализирует Google о том, что домен в целом содержит много URL низкого качества, что негативно сказывается на здоровье домена в целом (как и произошло в нашем случае). Мы потеряли около 40% трафика после запуска публичного форума, и одним из основных факторов стали эти дополнительные URL (за 12 месяцев в нашу карту сайта было добавлено более 30 000 URL низкого качества, просто из-за ответов, оставленных в каждой теме).

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

Поэтому я спрашиваю: существует ли какой-либо способ изменить настройки или создать плагин, который заставит форум Discourse не создавать эти дополнительные URL для каждого ответа в теме?

Я рассматриваю возможность миграции нашего форума с NodeBB на Discourse, но это имеет смысл только в том случае, если существует способ заставить наш форум Discourse не создавать эти дополнительные URL.

Это уже немного обсуждалось ранее: Google indexing same page multiple times: Issue with canonicals

Как вы смогли определить, что это был существенный фактор? Многие посты по SEO здесь довольно спекулятивны, поэтому наличие доказательств очень важно!

У меня нет опыта работы с этим плагином, и я не могу подтвердить его эффективность лично, но ранее кто-то пытался полностью отключить канонические ссылки с помощью плагина: Remove Canonical Link Plugin

Это уже немного обсуждалось ранее: Google индексирует одну и ту же страницу несколько раз: проблема с каноническими ссылками

Если я правильно понимаю эту дискуссию, речь идёт о несколько ином вопросе, чем тот, который я описал выше. Не является проблемой создание нескольких канонических URL для темы, если они сгруппированы по 20 ответов за раз и имеют уникальные мета-описания (page=2, page=3 и т. д.). Проблема возникает, когда для каждого отдельного ответа в теме создаётся новый URL (/2, /3, /4 и т. д.).

Для темы с 100 ответами первый подход приведёт к 5 URL на тему (100 ответов, сгруппированных по 20), тогда как второй — к 100 URL на тему (новый уникальный URL для каждого отдельного ответа), что создаёт серьёзную проблему для SEO.

Как вы смогли определить, что это был значимый фактор? Многие посты об SEO здесь довольно спекулятивны, поэтому какие-либо доказательства очень ценны!

С помощью таких инструментов, как Google Search Console, SEMrush и Ahrefs. Все они показывали предупреждения и ошибки, вызванные огромным количеством URL на нашем сайте, которые создавались благодаря ответам в темах форума. Все эти URL индексировались Google, не предоставляя при этом существенного нового контента. Показатели здоровья сайта находились в диапазоне 30–40, пока наш форум был общедоступным. Как только мы закрыли весь форум, сделав его приватным (чтобы Google не мог его видеть), и повторно запустили тесты, наш показатель здоровья вырос до 80+ только благодаря этому изменению.

У меня нет опыта работы с этим плагином, и я не могу лично подтвердить его эффективность, но кто-то ранее пытался полностью отключить канонические ссылки с помощью плагина: Плагин для удаления канонической ссылки

Я тоже нашёл этот плагин. К сожалению, он фактически усугубляет ситуацию, поскольку просто удаляет канонические теги полностью, оставляя при этом страницы /2, /3 и т. д. В результате эти дополнительные URL всё равно воспринимаются как низкокачественный дублированный контент.

Стоит отметить, что в нашем плане работ предусмотрена добавка заголовка X-Robots-Tag: noindex в тело ответа для этих страниц.

Хорошо это знать. Звучит как большой шаг в правильном направлении.

Кстати, мы уже сталкивались с подобным в нашем текущем форуме (когда он ещё был публичным): мы добавляли файл robots.txt в определённые подпапки форума, но Google всё равно их сканировал. Я считаю, что это крайне необычно… Однако наш вывод таков: бывают случаи, когда Google не следует этой директиве. Единственный способ на 100% гарантировать, что страница не будет проиндексирована, — это скрыть её за экраном авторизации или вообще не создавать такую страницу.

Со стороны кажется, что должно быть просто запретить Discourse выполнять лишние действия по созданию дополнительных URL для каждого ответа. Так программа выполняла бы меньше работы и создавала бы меньше сложностей, не так ли?

Было бы здорово иметь в настройках администратора возможность полностью отключить эти дополнительные URL.

Да, таким образом мы будем использовать тег заголовка вместо того, чтобы размещать эти правила в файле robots.txt.

Я не совсем понимаю, что здесь происходит.

Поскольку Discourse делает именно первое: он создаёт мета-теги canonical URL ?page=X для групп по 20 ответов. И, как вы можете видеть здесь, номера постов никогда не добавляются к URL в карте сайта — там используются только URL с ?page=X.

Поэтому я собирался сказать вам, что проблемы нет.

Но затем я выполнил поиск в Google по теме с множеством ответов и, хотя вторая страница результатов поиска полна ссылками ?page=X, некоторые из верхних результатов на самом деле ведут на нумерованные ответы.

Но почему это происходит? У той страницы есть правильный канонический URL.

rgj@labgate:~$ wget -q -O - "https://meta.discourse.org/t/babble-a-chat-plugin/87297/418"|grep -e "<title" -e canonical
<title>Babble - A Chat Plugin - #418 by HAWK - broken-plugin - Discourse Meta</title>
<link rel="canonical" href="https://meta.discourse.org/t/babble-a-chat-plugin/87297?page=20" />

Не знаю.

Мое предположение: эти ссылки встречаются где-то ещё в интернете, поэтому именно они попадают в индекс?

Каноническая ссылка предназначена для предотвращения этого. По крайней мере — в теории.

У меня был долгий разговор об этом с сообществом, ориентированным на блоги, здесь, в Бразилии, которое использует Discourse. Именно это подтолкнуло меня к尝试 нового подхода — отправке заголовка noindex для таких страниц конкретных постов. На следующей неделе я должен быть готов очистить код и объединить PR, и тогда мы сможем начать экспериментировать с этим.

Но почему это происходит? У этой страницы есть правильный канонический URL.\n\nИменно. В теории этого не должно происходить, но это случается. Как мы убедились на примере нашего сайта, это действительно может нанести ущерб показателю здоровья домена, что в конечном итоге негативно скажется на поисковых рейтингах всего домена.\n\nКасательно того, что сказал @pfaffman,\n\n> Моя дикая догадка: эти ссылки где-то ещё встречаются в интернете, поэтому именно они индексируются?\n\nЯ тоже так думал… но мы обнаружили, что Google индексирует десятки тысяч таких отдельных ответов на нашем сайте, хотя на них абсолютно ни от кого не было ссылок. Это довольно странно, и я не могу pretend, что понимаю, почему и как это происходит. Однако это подчёркивает необходимость для администратора форума иметь возможность просто отключать такие URL вида /2, /3, /4 и т. д. для каждого ответа, если он того пожелает.\n\nМне интересно: сложно ли предоставить Discourse такую возможность? С точки зрения не-программиста, это кажется лёгким, ведь речь просто о том, чтобы попросить программу меньше работать… но, возможно, есть какие-то нюансы, которые я не понимаю?

Я не уверен, но применение noindex к этим страницам может быть вредным. Discourse уже корректно обрабатывает это, используя канонические URL-адреса.

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

Точно неизвестно, как работает алгоритм ранжирования, и он меняется со временем, но стоит также учесть, что ранжирование является результатом входящих ссылок. Если внешний сайт ссылается на URL вида /number, и этот URL возвращает заголовок noindex, можно предположить, что Google может не передать входящий «вес ссылки» на канонический URL, что может негативно сказаться на поисковых позициях сайтов на Discourse.

Я считаю, что гораздо безопаснее связаться с кем-то из Google Search и сообщить им, что канонический тег не работает для широко используемой CMS, чем пытаться придумать обходной путь, который при следующих обновлениях Google может обрабатываться иначе.

Нет, это подчёркивает необходимость исправить проблемы. Как разработчик программного обеспечения, я считаю очень сложным удалять функциональность только потому, что она работает не на 100 % корректно. Давайте попробуем помочь и разобраться в этом вопросе.

Вы уверены в этом? Я никогда не видел номера поста в карте сайта.

Вот почему это будет настройкой сайта.

Спасибо, что обратили на это внимание. Слово «карта сайта», вероятно, было использовано неверно. Я имел в виду, что эти пронумерованные посты сканировались и индексировались Google, отображаясь как отдельные страницы в Google Analytics и Search Console, что привело к появлению ОГРОМНОГО количества низкокачественных страниц на нашем домене.

Если бы эти номера не добавлялись к каждому ответу, Google мог бы видеть только URL-адрес оригинального поста.

Да, и если бы Google уважал теги метаданных rel="canonical" (которые они и придумали!), которые были добавлены специально для предотвращения подобных действий со стороны Google, это не было бы проблемой, и мы всё ещё могли бы ссылаться на конкретное сообщение.

Звучит хорошо. Было бы идеально, если бы эта функция была отключена по умолчанию, так как не исключено, что она может привести к исчезновению страниц тем из Google или других поисковых систем.Не уверен, упоминалось ли это уже, но ещё один способ исправить проблему без использования noindex — использовать фрагменты URL для постов, поскольку они не должны учитываться как отдельные страницы.```
/t/slug/id#13

Спасибо за предложение. Мне бы хотелось думать, что это сработает… но учитывая, что даже оригинальный «правильный» метод не работает, я скептически отношусь к тому, что что-либо решит проблему, кроме полного отказа от нумерованных ответов.

Конечно, я не говорю, что ВСЕ пользователи Discourse должны перестать их использовать. Чёрт возьми, если бы не глупость Google (и/или если бы мы планировали сделать наш форум приватным, а не публичным), я бы только «за»… но просто наличие опции отключения автоматической нумерации ответов стало бы огромной помощью для тех, кто управляет публичными форумами и заботится об общем SEO-здоровии своего домена.

Однако это уберёт возможность ссылаться на конкретные посты. Не будет способа сослаться на пост №789 в теме из 1000 постов, и пользователям будет неудобно прокручивать столько контента.

Это странно. Я поискал в Google, индексируются ли URL-адреса с ID постов на моих форумах, и обнаружил, что во всех проверенных темах отображаются только канонические URL-адреса.

Однако я вижу это на другом крупном сайте Discourse. Это также отображается в этой теме. [Запрос в Google]

Я выполнил сравнение двух ответов следующим образом:

curl -s https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648 > 1.html
curl -s https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/8 > 2.html
vim -d 1.html 2.html

Одно заметное отличие — значение article:published_time различается, хотя оно, вероятно, должно быть одинаковым, поскольку страницы в остальном почти идентичны. Интересно, может ли этот мета-тег заставить Google игнорировать канонический URL. Сотрудник Google утверждает, что канонические URL-адреса в некоторых случаях могут игнорироваться здесь.

<meta property="article:published_time" content="2021-11-19T15:57:21+00:00" />
<meta property="article:published_time" content="2021-11-20T06:48:06+00:00" />

Также, уникален ли тег ignore_canonical для Discourse или есть вероятность, что Google будет следовать ему? Я увидел его в HTML.

<meta property="og:ignore_canonical" content="true" />

Это может быть немного более неудобно, но если URL-адреса с параметрами page=2, page=3 и т. д. всё ещё работают (что не создаёт проблем с SEO, в отличие от нумерованных ответов), то можно хотя бы перенаправить пользователя на правильную страницу внутри обсуждения. Это приведёт его почти к цели, при условии, что он готов немного прокрутить страницу.

Один из форумов, работающих по такому принципу, — BiggerPockets. У их ответов нет индивидуальных URL-адресов с номерами, но у тем есть нумерованные страницы, например: Kids throwing rocks at windows nearly everyday. Won't stop.Kids throwing rocks at windows nearly everyday. Won't stop. (обратите внимание на URL при прокрутке каждой темы и страницы).

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

Интересно. Я не знаю, является ли это причиной проблемы, но понимаю, как такая несогласованность может запутать Google и заставить его проигнорировать канонический URL.

Тем не менее, учитывая специфику работы форумов, если вы не хотите полностью убрать даты и хронологию каждой темы, вы не сможете этого устранить, не так ли? Учёт дат и времени каждого сообщения и ответа — это своего рода неотъемлемая часть того, как работают форумы.