/u/*의 Canonical 구조로 인해 많은 URL이 인덱싱됨

처음에는 이 문제를 “버그” 카테고리로 작성했습니다 …

… 하지만 누군가가 이 문제에 대해 PR이나 커밋이 필요하다고 생각하신다면, 제가 막지 않겠습니다 :crossed_fingers:

지난 2개월간 Discourse의 정형(canonical) 구조를 열심히 연구해 왔는데, 전반적으로 훌륭합니다.

no_definitions=true나 /search?q= 같은 값이 포함된 기이한 URL도 올바른 canonical URL을 반환합니다.

이것은 사용자와 크롤러 모두에게 JS 버전의 사이트를 서빙할 때 정상적으로 작동합니다.

하지만 /u/* URL은 놓친 것 같습니다. canonical이 설정되어 있긴 하지만, 수천 개의 추가 URL이 Google에 인덱싱되도록 만드는 URL을 가리키고 있습니다.

작업 내용:

사용자 이름 뒤에 오는 모든 URL이 사용자 프로필 메인 페이지로 canonical되도록 하고 싶습니다.

즉, /u/FlyNumber가 메인 프로필 페이지입니다.

다음 URL들은 현재와 같이 자기 자신으로 canonical되는 대신, 위의 URL로 canonical되어야 합니다:

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1개의 좋아요

여기에서 논의된 사용자 지정 인덱싱 설정을 위한 것인가요?

그렇다면, 해당 작업을 살펴보는 사람들이 어떤 내용을 다루게 되는지 알 수 있도록 이 점을 명시해 두는 것이 도움이 될 수 있습니다.

기본적으로 /u/ URL은 인덱싱되지 않으며, 이는 robots.txt와 페이지의 초기 헤더 요청 모두에 설정되어 있습니다.

image

4개의 좋아요

아니요, prerender 사용을 중단했기 때문입니다. 메인 메뉴, 로그인 버튼 등을 렌더링할 수 없었거든요.

Google 봇이 "앱"을 직접 가져갑니다.

Discourse의 숨겨진 사이트 설정을 크롤러에게 JS 버전을 제공하도록 설정해 두었습니다. Google은 이를 잘 처리하는 것 같습니다. (곧 이에 대한 추가 업데이트가 있을 예정입니다.)

좋은 지적입니다. /badges도 마찬가지네요…

저는 직접 수정한 robots 파일을 사용하고 있습니다.

Cloudflare workers를 사용하여 헤더를 수정하여 'index'로 설정하고 있습니다.

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges

해당 URL에 대해 canonical 태그를 완전히 제거하는 것이 올바른 방향의 한 걸음이라고도 지적하고 싶습니다. (개인적인 의견으로는 제 방식이 SEO에 더 유리하다고 생각합니다)

위에서 언급했듯이 noindex로 설정되어 있으므로, Discourse가 왜 canonical 태그를 생성하는지 이해가 되지 않습니다.

혹시 JS와 Cloudflare Workers를 사용하여 이 작업을 깔끔하게 처리하는 방법을 아시는 분이 있을까요? 이렇게 하면 Discourse 코드를 건드리지 않아도 됩니다.

/u/*/summary - (저는 /u/*에 대해서만 트리거를 설정할 수 있습니다) - 에 "트리거"를 설정하고, 다음과 같은 코드를 실행할 수 있습니다:

const canonical = document.querySelector('link[rel="canonical"]');
if (canonical !== null) {
  canonical.href = 'NEW_HREF_GOES_HERE';
}

여기서 NEW_HREF_GOES_HERE에 사용자 이름을 전달하려면 어떻게 해야 할까요? 그렇게 하면 canonical 링크가 /u/*/summary가 아니라 /u/*로 설정됩니다.

도움 주시면 감사하겠습니다.

수정

혹시 관련 GitHub 페이지를 알려주실 수 있을까요? 코드를 직접 수정하는 운을 걸어볼 생각입니다.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.