Плагин Sitemap — в стандартной карте сайта отсутствуют URL с ?page=…

Плагин sitemap не включает никакие URL-адреса с ?page=… в стандартных картах сайта, например: https://meta.discourse.org/sitemap_4.xml

<url>
  <loc>
    https://meta.discourse.org/t/importing-migrating-from-phpbb3/30810
  </loc>
  <lastmod>2022-02-25T21:55:40Z</lastmod>
</url>

В последней карте сайта URL-адреса с пагинацией включены — например: https://meta.discourse.org/sitemap_recent.xml

<url>
  <loc>
    https://meta.discourse.org/t/importing-migrating-from-phpbb3/30810?page=18
  </loc>
  <lastmod>2022-03-07T12:03:50Z</lastmod>
</url>

Отсутствие URL-адресов с ?page=… в стандартных картах сайта предусмотрено конструктивно?
Все эти URL-адреса с ?page=… являются каноническими, поэтому они должны быть добавлены в стандартную карту сайта — например:

<url>
  <loc>
    https://meta.discourse.org/t/importing-migrating-from-phpbb3/30810
  </loc>
  <lastmod>2022-02-25T21:55:40Z</lastmod>
</url>
<url>
  <loc>
    https://meta.discourse.org/t/importing-migrating-from-phpbb3/30810?page=2
  </loc>
  <lastmod>2022-03-02T19:08:07Z</lastmod>
</url>

[…]

<url>
  <loc>
    https://meta.discourse.org/t/importing-migrating-from-phpbb3/30810?page=18
  </loc>
  <lastmod>2022-03-07T12:03:50Z</lastmod>
</url>

источники

2 лайка

Я не думаю, что это сделано намеренно. Не могли бы вы создать PR для исправления?

Спасибо @rrit, несколько месяцев назад я тоже это заметил, но всегда думал, что это нормально :man_facepalming:t2:

Я могу реализовать простое решение, которое не слишком точно отражает дату последнего редактирования: например, все страницы одной темы будут использовать дату последнего отредактированного поста.
Таким образом, при создании нового поста в теме (с множеством постов и страниц) все страницы получат новую дату изменения — даже если обновить нужно только последнюю страницу.

Является ли это жизнеспособным решением?


В противном случае нам нужно объединять все посты темы в пакеты по 20 постов (на страницу). Затем для каждого пакета отдельно вычислять дату последнего изменения.

Честно говоря, я посмотрел на это и пока не могу решить, нужны ли здесь какие-то изменения. Проблема не в том, что Google испытывает трудности с обнаружением контента на форумах Discourse.

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

1 лайк

Означает ли фраза «произвольное принятие решений» один из следующих пунктов:
(См. Page indexing report - Search Console Help)


С положительной стороны добавления всех этих канонических URL с параметром ?page=… в карту сайта:
Это дает Google четкий сигнал относительно тега <lastmod> для этих URL. Благодаря этому у Google нет причин повторно сканировать неизмененные URL с параметром ?page=…, и он может использовать свой ценный бюджет сканирования для более важных URL.

Если URL с параметром ?page=… отсутствуют в карте сайта, Google все равно находит их и выполняет некоторое «произвольное» повторное сканирование — даже если это совершенно не нужно, поскольку изменений в контенте нет.

См. Build and Submit a Sitemap | Google Search Central  |  Documentation  |  Google for Developers


Google действительно отслеживает и различает, откуда он узнал о URL:
«Все отправленные страницы» (карта сайта) или «Все известные страницы» (ссылки и т. д.).
См. Google Search Console → Индекс → Отчет о покрытии

  • «Карта сайта — это важный способ для Google обнаруживать URL на вашем сайте». см.
  • «Google выбирает каноническую страницу на основе ряда факторов (или сигналов), таких как […], наличие URL в карте сайта, […].» см.
  • «Использование карты сайта не гарантирует, что все элементы в вашей карте сайта будут просканированы и проиндексированы, поскольку процессы Google используют сложные алгоритмы для планирования сканирования». см.
1 лайк

Надеюсь, это будет реализовано вместе с этим :slight_smile:

2 лайка

Это, безусловно, стоит учесть @Roman при интеграции этого в ядро.

Я предпочитаю сначала объединить карту сайта, прежде чем добавлять больше изменений, но как только это будет сделано… возможно, мы сможем начать с канонических URL-адресов страниц на _recent. У нас уже есть канонический URL, который можно использовать в posts.rss, и при надлежащем кэшировании его также можно будет использовать в картах сайта.

3 лайка

У меня возникли проблемы с Google Search Console при попытке индексации URL-адресов вроде https://example.com/t/title-slug/1234?page=3, из-за чего Discourse возвращает ошибку 404. Удаление параметра ?page=x делает URL-адрес корректным.

Я предполагаю, что это побочный эффект добавления Discourse пагинации для версии сайта, которую он предоставляет поисковым роботам:

URL страниц работают нормально, вам просто нужно больше N постов.

Случайно у вас не очень много удалённых постов по этой теме?

Привет, Сэм, спасибо за ответ. После публикации я нашёл ваше объяснение здесь:

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

1 лайк

Ой, это всё импортировано из Drupal? Это общая нить здесь?

Да, почти 100 тысяч тем и около 2 миллионов сообщений. Не уверен, что эта проблема касается только импортированных тем. Если я обнаружу ещё какие-либо аномалии, скоро вернусь сюда с обновлением.

1 лайк