Sitemap 플러그인 - 기본 사이트맵에 ?page=… URL이 없음

sitemap 플러그인은 기본 사이트맵에 ?page=… URL을 포함하지 않습니다. 예: 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>

기본 사이트맵에 ?page=… URL이 없는 것이 의도된 설계인가요?
이 모든 ?page=… URL은 정정(canonical) URL이므로 기본 사이트맵에 추가되어야 합니다. 예를 들어 다음과 같이요:

<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:

마지막 수정 날짜에 대해 매우 구체적이지는 않지만, 쉬운 수정을 구현할 수 있습니다. 예를 들어, 하나의 주제(topic)에 있는 모든 페이지가 마지막 수정된 게시물의 동일한 날짜를 사용하도록 하는 방식입니다.
이 경우, 게시물이 많은 주제에서 새 게시물이 작성되면(게시물과 페이지가 많을 때), 마지막 페이지에만 새 날짜가 필요한 경우에도 모든 페이지에 새로운 마지막 변경 날짜가 부여됩니다.

이것이 실현 가능한 해결책일까요?


그렇지 않다면, 주제 내의 모든 게시물을 페이지당 20개씩 묶음으로 처리해야 합니다. 그리고 각 묶음에 대해 마지막 변경 날짜를 개별적으로 계산해야 합니다.

솔직히 이 부분에 대해 어떤 변경 사항이든 반반인 상태입니다. 문제는 Google이 Discourse 포럼의 콘텐츠를 발견하는 데 어려움을 겪고 있다는 것이 아닙니다.

실제로는 콘텐츠를 발견하고 크롤링한 뒤, "임의의 의사결정"을 내리며 해당 콘텐츠가 인덱스에 속하지 않는다고 판단하는 것입니다.

1개의 좋아요

"임의의 의사 결정"은 다음 중 하나의 점을 의미합니까?
(참고: Page indexing report - Search Console Help)


모든 ?page=… 정규화(canonical) URL을 사이트맵에 추가하는 데 있어 장점:
이로써 Google은 이러한 URL에 대해 <lastmod>에 대한 강력한 힌트를 얻게 됩니다. 따라서 Google은 변경되지 않은 ?page=… URL을 다시 크롤링할 이유가 없으며, 더 중요한 URL에 귀중한 크롤링 예산을 사용할 수 있습니다.

사이트맵에 ?page=… URL이 누락되어 있으면, Google은 이를 어쨌든 찾아내고 콘텐츠에 새로운 변경 사항이 전혀 없음에도 불구하고 불필요하게 “임의적으로” 다시 크롤링합니다.

참고: Build and Submit a Sitemap | Google Search Central  |  Documentation  |  Google for Developers


Google은 URL을 어디서 알게 되었는지를 실제로 추적하며 차이를 둡니다:
“제출된 모든 페이지”(사이트맵) 또는 “알려진 모든 페이지”(링크 등)
참고: Google Search Console → 인덱스 → 커버리지 보고서

  • “사이트맵은 Google이 사이트의 URL을 발견하는 중요한 방법입니다.” 참고
  • “Google은 [ … ], 사이트맵에 URL이 존재하는지 여부, [ … ] 등 여러 요인(또는 신호)에 기반하여 정규화 페이지를 선택합니다.” 참고
  • “Google의 처리는 크롤링을 예약하기 위해 복잡한 알고리즘에 의존하므로, 사이트맵을 사용한다고 해서 사이트맵의 모든 항목이 크롤링되고 인덱싱된다는 보장은 없습니다.” 참고
1개의 좋아요

이 PR과 함께 구현되길 바랍니다 :slight_smile:

2개의 좋아요

이것은 분명히 @Roman이 이 기능을 코어에 통합할 때 염두에 두어야 할 사항입니다.

더 많은 변경 사항을 추가하기 전에 먼저 사이트맵을 병합하는 쪽을 훨씬 선호합니다. 하지만 그 작업이 완료되면 … _recent에서 정규 페이지 기반 URL로 시작할 수 있을지도 모릅니다. 이제 사이트맵에서 사용할 수 있는 정규 URL이 있으며, 적절한 캐싱을 거치면 posts.rss에서도 사용할 수 있습니다.

3개의 좋아요

Google Search Console에서 https://example.com/t/title-slug/1234?page=3와 같은 URL을 인덱싱하려고 할 때 문제가 발생하고 있습니다. 이러한 URL은 Discourse에서 404 오류를 발생시킵니다. ?page=x 파라미터를 제거하면 URL이 유효해집니다.

이것은 크롤러에게 제공되는 사이트 버전에 Discourse가 페이지네이션을 추가하는 것의 부수적 영향으로 추정됩니다:

페이지 URL은 정상적으로 작동합니다. 다만 N개 이상의 게시물이 있어야 합니다.

해당 주제에 삭제된 게시물이 많이 있나요?

샘, 답변해 주셔서 감사합니다. 이 글을 올린 후에 여기에서 선생님의 설명을 찾았습니다:

하지만 제 경우엔, 이 문제를 겪는 주제들을 살펴본 결과 원본 스레딩에 대한 수정 사항이 표시되지 않습니다. 유일한 차이점은 이 주제들이 Drupal에서 가져온 것이라는 점입니다. 하지만 불행히도 이런 주제들이 수없이 많아서, 아마도 수천 개에 달할 텐데요, Discourse에서 원래 생성된 주제들도 영향을 받는지 확인하기 위해 다른 예시들을 더 자세히 살펴봐야 할 것 같습니다.

1개의 좋아요

아니, 드루플에서 대량으로 가져온 건가요? 그게 여기의 공통된 주제인가요?

네, 대략 10만 개의 토픽과 약 200만 개의 게시물 정도입니다. 이 문제가 가져온 토픽에서만 발생하는지 확실하지는 않아요. 추가 이상 사항을 발견하면 여기서 다시 말씀드리겠습니다.

1개의 좋아요