요청된 페이지가 리소스의 정식(canonical) 페이지가 아닌 경우, Discourse는 이제 X-Robots-Tag: noindex 헤더로 응답합니다.
Discourse는 주제 목록과 주제 모두에 자동 스크롤 디자인을 사용하지만, GoogleBot과 같은 검색 엔진 크롤러에게 표시되는 것은 이와 다릅니다. 검색 엔진은 각 페이지에 20개의 게시물이 포함된 페이지네이션된 주제를 인식합니다. 그러나 사용자가 자신의 게시물에서 특정 게시물을 링크할 때 /t/title/topic_id/post_id URL 형식을 사용하므로, 이러한 URL이 크롤러에 의해 수집되어 사이트 검색 결과에 중복된 콘텐츠가 추가되고 도메인의 귀하고 제한적인 크롤 예산을 낭비하게 됩니다.
이 문제를 완화하기 위해, 사용자 커뮤니티는 게시물별 URL과 같은 URL에 X-Robots-Tag: noindex를 추가할 것을 제안했으며, 우리는 이를 Discourse의 모든 비정식 URL로 확장하는 데 성공했습니다. 이 기능은 3개월 전 숨겨진 사이트 설정으로 출시되어 기본적으로 비활성화되었으며, 그 동안 커뮤니티 사이트와 meta.discourse.org에서 이 헤더를 활성화하는 실험을 진행했습니다.
이 기간의 결과가 지금까지 양호하게 나타나고 있어, 이 설정을 기본적으로 활성화되도록 변경했습니다.
어떤 이유로든 인스턴스에서 이 동작을 원하지 않는 경우, 서버에서 docker exec -i app rails runner "SiteSetting.allow_indexing_non_canonical_urls = true"를 실행하여 비정식 페이지의 인덱싱을 활성화할 수 있습니다.
크롤링과 검색 결과에 즉각적인 극적인 변화는 기대하지 마십시오. 하지만 향후 몇 달 동안 게시물별 페이지의 크롤링과 검색 결과가 감소하는 것을 볼 수 있을 것이며, 이는 도메인의 크롤 예산 제약으로 인해 아직 인덱싱되지 않은 콘텐츠와 사이트의 새로운 주제에 더 많은 크롤링 시간이 사용되도록 할 것입니다.
요약: 비정규(non-canonical) 페이지를 차단하지 마세요. <link rel="canonical" … > 태그를 사용하여 올바른 URL로 유도하는 것만으로 충분합니다. 이 태그가 바로 그 용도로 만들어졌습니다.
이 기능은 장기적으로 SEO 링크 빌딩에 해를 끼칠 수 있습니다:
이제 모든 토픽 내 답변에 대한 딥링크(deep-link)가 noindex 페이지에 있습니다! 구글은 이런 방식을 좋아할까요?
사실 canonical 태그가 항상 토픽 URL을 가리키도록 설정되어 있다면(답변에 딥링크하는 페이지의 경우에도) – X-Robots-Tag: noindex를 추가하지 않고도 – 이 역할을 완벽하게 수행할 수 있습니다:
딥링크된 답변 페이지를 처음 크롤링할 때 구글은 해당 페이지 URL(토픽 내 답변)이 canonical-url과 일치하지 않음을 인식하고, canonical-url(토픽)만 크롤링하도록 결정합니다.
이 토픽-답변 딥링크를 수행하는 모든 링크에 <a rel="nofollow" …>를 추가할 수 있을까요? 수정: 아니요, Search engines now blocked from indexing non-canonical pages - #9 by j127 참고
이렇게 하면 검색 엔진의 귀하고 제한된 크롤 버짓을 더 절약할 수 있습니다:
검색 엔진은 링크를 처음부터 추출하지도 않고 해당 URL에 호출을 보내지도 않습니다. URL 호출은 X-Robots-Tag: noindex HTTP 헤더를 포함하는 응답을 반환하므로, 검색 엔진의 내부 ‘noindex’ 목록에 URL을 추가하여 응답이 '폐기’되기 때문입니다.
글의 첫 번째 부분에는 동의하지만, 내부 nofollow가 이상적이라고 생각하지는 않습니다. 내부 링크는 검색 엔진에 사이트 내에서 어떤 페이지가 중요한지를 알려주는 데 도움이 됩니다. Google은 모든 링크를 따라가지 않습니다. 이미 이전에 본 링크임을 알고 있기 때문입니다. example.com/t/1234/5와 같은 URL을 보았지만 이미 크롤링하여 그 canonical URL이 example.com/t/1234임을 알고 있다면, 비정규(canonical이 아닌) 버전을 여러 번 방문하는 데 컴퓨팅 리소스를 낭비하지 않을 가능성이 높습니다.
죄송합니다. "답변"이라고 한 것은 토픽 안의 "게시물"을 의미합니다:
외부 도메인에서 게시물(예: forum.example.com/t/example-topic/5/11)로 가는 모든 딥링크에 이제 http 헤더 X-Robots-Tag: noindex가 붙어 있습니다! 이 http 헤더를 다시 제거하는 것을 제안합니다.
<link rel="canonical" … >에 게시물 앵커가 포함된 URL(…/t/example-topic/1234/5의 마지막 숫자)을 어디에도 사용하지 않는 것을 제안합니다. Canonical URL은 항상 토픽 URL 자체(…/t/example-topic/1234)를 가리켜야 합니다. 이미 이렇게 구현되어 있다고 생각합니다.
대상 URL이 <link rel="canonical" … >에 의해 "리다이렉트"되는 경우 검색 엔진을 위한 링크 재작성
매우 좋은 지적입니다. 여기에는 rel="nofollow"를 추가하지 않는 것이 좋습니다.
Discourse에는 크롤러를 위한 특수 뷰가 있습니다. 크롤러 뷰 전용으로 새로운 제안:
게시물 URL(example.com/t/1234/5)을 가리키는 모든 내부 링크를 대신하여 해당 토픽 URL(example.com/t/1234)을 가리키도록 변환합니다.
목적: 이러한 추가 URL이 <link rel="canonical" … >에 의해 어쨌든 "리다이렉트"되는 경우, 검색 엔진에 추가 URL을 알리지 않기 위함입니다.
이러한 게시물 링크가 발견되는 위치:
사용자 콘텐츠에 수동으로 추가된 링크
자동 생성된 링크:
인용문
토픽의 첫 번째 게시물: 다른 토픽에서 온 “인바운드 추적 링크”
토픽의 첫 번째 게시물: “선택된 답변”
토픽의 첫 번째 게시물 - 토픽 맵 열림: “토픽 링크”/“좋아한 링크”
여담: 구글은 모든 이러한 URL을 어디서 찾을까요?
검색 엔진을 위한 “인바운드 추적 링크”
바로 이 이유 때문에, 토픽의 첫 번째 게시물에 자동 생성되는 "다른 토픽에서 온 인바운드 추적 링크"도 검색 엔진에서 볼 수 있어야 합니다. 현재 이러한 "인바운드 추적 링크"는 크롤러 뷰에 없습니다. 수정: 크롤러 뷰에 이미 있습니다.
하지만 토픽 URL 대신 게시물 URL을 가리킴 (HTML 소스 참조)
<div class="crawler-linkback-list" itemscope="" itemtype="http://schema.org/ItemList">
<div itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<a href="https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/26" itemscope="" itemtype="http://schema.org/DiscussionForumPosting" itemprop="item">
<meta itemprop="url" content="https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/26">
<span itemprop="name">토픽 URL 내에서 각 답변에 대한 /2, /3, /4 등 링크 제거</span>
</a>
<meta itemprop="position" content="2">
</div>
</div>
http 헤더 X-Robots-Tag: noindex를 추가하지 않습니다.
– [E] 고려 –
canonical 태그가 항상 주제 URL을 가리키도록 유지합니다.
– 크롤링 감소 [A] 및 [C] 고려 –
크롤러 뷰에만 적용: 주제 첫 번째 게시물의 “다른 주제에서 온 인바운드 추적 링크” 및 "주제 맵 열림: 주제 링크/좋아한 링크"의 모든 링크에 대해, 자동으로 생성된 링크가 항상 게시물 URL이 아닌 주제 URL을 가리키도록 변환합니다.
– 크롤링 감소 [A] 및 [D] 고려, 그러나 의도적으로 [B]를 무시 –
[B]에 대해: CPU 비용은 크롤러 방문 시에만 발생하며, 내부 URL의 끝부분에 두 개의 숫자로 끝나는 마지막 숫자를 잘라내는 정규식 치환으로 구성됩니다. 예: …/t/example-topic/1234/5 → …/t/example-topic/1234. 이는 주제 첫 번째 게시물의 “다른 주제에서 온 인바운드 추적 링크” 및 “주제 맵 열림” 구역 내에서만 제한적으로 수행됩니다.
모든 뷰에 적용: 인용문 및 사용자 콘텐츠에 수동으로 추가된 링크에 내부 nofollow를 추가합니다.
– 크롤링 감소 [A] 및 [B] 고려, 그러나 [D]를 약간 무시 –
[D]에 대해: 중요한 링크는 이미 “주제 맵 열림: 주제 링크/좋아한 링크” 섹션의 첫 번째 주제에 자동으로 복제되어 있습니다(3번 항목 참조) 그리고 대부분의 인용문은 어쨌든 주제 자체 안에 남아 있습니다.