Отсутствие URL-адресов с ?page=… в стандартных картах сайта предусмотрено конструктивно?
Все эти URL-адреса с ?page=… являются каноническими, поэтому они должны быть добавлены в стандартную карту сайта — например:
Я могу реализовать простое решение, которое не слишком точно отражает дату последнего редактирования: например, все страницы одной темы будут использовать дату последнего отредактированного поста.
Таким образом, при создании нового поста в теме (с множеством постов и страниц) все страницы получат новую дату изменения — даже если обновить нужно только последнюю страницу.
Является ли это жизнеспособным решением?
В противном случае нам нужно объединять все посты темы в пакеты по 20 постов (на страницу). Затем для каждого пакета отдельно вычислять дату последнего изменения.
Честно говоря, я посмотрел на это и пока не могу решить, нужны ли здесь какие-то изменения. Проблема не в том, что Google испытывает трудности с обнаружением контента на форумах Discourse.
Проблема в том, что он обнаруживает и индексирует этот контент, а затем, основываясь на «произвольных решениях», решает, что этот контент не должен быть включен в индекс.
С положительной стороны добавления всех этих канонических URL с параметром ?page=… в карту сайта:
Это дает Google четкий сигнал относительно тега <lastmod> для этих URL. Благодаря этому у Google нет причин повторно сканировать неизмененные URL с параметром ?page=…, и он может использовать свой ценный бюджет сканирования для более важных URL.
Если URL с параметром ?page=… отсутствуют в карте сайта, Google все равно находит их и выполняет некоторое «произвольное» повторное сканирование — даже если это совершенно не нужно, поскольку изменений в контенте нет.
Google действительно отслеживает и различает, откуда он узнал о URL:
«Все отправленные страницы» (карта сайта) или «Все известные страницы» (ссылки и т. д.).
См. Google Search Console → Индекс → Отчет о покрытии
«Карта сайта — это важный способ для Google обнаруживать URL на вашем сайте». см.
«Google выбирает каноническую страницу на основе ряда факторов (или сигналов), таких как […], наличие URL в карте сайта, […].» см.
«Использование карты сайта не гарантирует, что все элементы в вашей карте сайта будут просканированы и проиндексированы, поскольку процессы Google используют сложные алгоритмы для планирования сканирования». см.
Это, безусловно, стоит учесть @Roman при интеграции этого в ядро.
Я предпочитаю сначала объединить карту сайта, прежде чем добавлять больше изменений, но как только это будет сделано… возможно, мы сможем начать с канонических URL-адресов страниц на _recent. У нас уже есть канонический URL, который можно использовать в posts.rss, и при надлежащем кэшировании его также можно будет использовать в картах сайта.
У меня возникли проблемы с Google Search Console при попытке индексации URL-адресов вроде https://example.com/t/title-slug/1234?page=3, из-за чего Discourse возвращает ошибку 404. Удаление параметра ?page=x делает URL-адрес корректным.
Я предполагаю, что это побочный эффект добавления Discourse пагинации для версии сайта, которую он предоставляет поисковым роботам:
Привет, Сэм, спасибо за ответ. После публикации я нашёл ваше объяснение здесь:
Но в моём случае нет: темы с этой проблемой, которые я проверил, не показывают никаких изменений в исходной цепочке сообщений. Единственное — они были импортированы из Drupal. Но мне нужно изучить другие примеры, чтобы понять, затронуты ли также темы, изначально созданные в Discourse, потому что, к сожалению, их очень много — вероятно, тысячи.
Да, почти 100 тысяч тем и около 2 миллионов сообщений. Не уверен, что эта проблема касается только импортированных тем. Если я обнаружу ещё какие-либо аномалии, скоро вернусь сюда с обновлением.