Discourse 앱에는 Discourse DOM의 <head> 섹션에 있는 <link rel="canonical"> 메타 데이터 요소를 업데이트하는 것과 관련된 버그가 있습니다.
기본적으로 브라우저 클라이언트가 애플리케이션에 진입하고 애플리케이션이 처음 로드될 때, <link rel="canonical" href=""> 요소는 해당 초기 페이지 로드에 따라 설정됩니다. 그러나 사용자가 페이지를 수동으로 새로고침하지 않고 앱 내에서 클릭할 때(일반적인 사용자 행동), <link rel="canonical"> 링크는 업데이트되지 않습니다.
저는 이 버그를 테스트하여 메타 사이트에서 재현했습니다:
그림 1. 홈 페이지에서 메타로 진입하면, 타이틀 요소와 마찬가지로 canonical 링크가 올바르게 설정됩니다.
GoogleBot에게 렌더링되는 HTML에 단일 커스텀 JavaScript 파일을 추가하는 가장 좋은 방법은 무엇인가요?
봇에게 제공되는 HTML을 수정하는 "표준적인 방법"이 있나요?
이렇게 질문하는 이유는 제가 작성한 플러그인(봇을 위해 설계됨)에서 생성된 커스텀 코드가 있기 때문입니다. 콘솔에서 GoogleBot UA를 사용하여 확인해 보았지만(이것도 알려주셔서 감사합니다), 그 커스텀 플러그인 코드가 GoogleBot에 의해 소비되지 않는 것을 발견했습니다.
이 기간 동안, 크롤러에게 제공되는 HTML에 대한 (handlebars 기반) 플러그인으로 내가 원하는 작업을 수행할 수 없으므로, 현재는 Discourse에서 canonical 태그를 단순히 제거하기로 결정했습니다. 이는 웹 크롤러를 위한 canonical 태그를 JavaScript로 수정하는 방법을 알아낼 때까지의 부분적인 해결책입니다.
Discourse는 컨테이너의 yml 파일을 통해 이러한 유형의 변경 사항을 적용할 수 있는 좋은 메커니즘을 제공하므로, 오늘 그 방법을 사용했습니다.
Discourse 메타가 (식별된) 크롤러에게 제공되는 Discourse 앱이 사용자에게 제공되는 페이지와 같지 않다는 점을 지적해 주셔서 매우 감사드립니다.
다른 Discourse 시스템 관리자에게 이 "임시 해결책"을 권장하지 않음을 유념해 주세요. 저는 단지 현재 제가 결정하고 실행한 방법(더 흥미로운 해결책이 나올 때까지)을 공유하는 것입니다.