티스토리 블로그 카테고리 페이지에서 발생하는 “유효한 canonical 없음” 및 “도메인 루트 URL” 지정 오류의 원인을 분석하고, 개발자 도구를 사용한 확인 방법, 그리고 동적 스크립트 예시를 포함한 canonical 오류 수정을 통한카테고리 페이지 SEO 최적화 해결 방법을 다룹니다.
Canonical 오류 이해: ‘유효한 rel=canonical 없음’ 문제의 핵심
검색 엔진 최적화(SEO)를 고민하는 웹사이트 운영자라면 한 번쯤은 구조화된 데이터(markup)에 대해 들어보셨을 것입니다. 구조화된 데이터는 Google과 같은 검색 엔진이 웹사이트의 콘텐츠를 더 정확하게 이해하고, 검색 결과(SERP)에서 사이트의 노출 방식을 개선하는 데 핵심적인 역할을 합니다.
하지만 이러한 마크업이 잘못되었을 경우, 예상치 못한 오류 메시지가 발생할 수 있습니다.
블로그 카테고리 페이지에서 발생하는 “문서에 유효한 rel=canonical 없음 ” 및 “도메인의 루트 URL을 가리킴” 오류는 구글 검색 엔진 최적화 안내 문구에서 자주 지적되는 사항입니다.
이 문제를 해결하기 위해 개발자 도구를 사용해 카테고리 페이지의 canonical 태그를 확인해야 합니다. 실제로 접속한 카테고리 페이지의 canonical 태그가 루트 도메인을 가리키고 있음을 확인했습니다. 이는 구글 성능 검사에서 지적한 문제를 발생시킵니다. 이를 해결하려면 각 페이지의 올바른 canonical 태그를 설정해야 합니다.
티스토리 블로그 카테고리 페이지의 Canonical 오류 원인 분석
블로그 카테고리 페이지에서“문서에 유효한 rel=canonical 없음” 및 “도메인의 루트 URL을 가리킴” 오류가 발생하는 경우, 이 문제를 해결하기 위해 canonical 태그를 올바르게 설정하는 방법이 필요합니다.
문서에 유효한 canonical 없음 원인
카테고리 페이지의 canonical 태그가 루트 도메인인 https://example.tistory.com을 가리키고 있는 경우, 이는 구글 성능 검사에서 지적하는 문제를 발생시킵니다.
주요 문제 사항 요약
- canonical 없음 (혹은 잘못된 canonical 지정)
- 도메인 루트 URL을 가리킴 (페이지 고유성을 상실함)
문서에 유효한 rel=canonical 없음 오류는 개발자 도구를 통해 확인할 수 있습니다. 실제로 카테고리 페이지의 canonical 태그가 올바르게 설정되어 있지 않음을 확인할 수 있습니다. 이는 중복 콘텐츠(Duplicate Content)로 인식될 가능성을 높입니다.
개발자 도구를 사용한 Canonical 태그 확인 예시
개발자 도구를 사용하여 카테고리 페이지의 canonical 태그를 확인합니다. 다음은 카테고리 페이지에 접속했을 때의 canonical 태그 확인 결과입니다.
- 접속한 카테고리 URL:
https://example.tistory.com/category/ - 확인된 canonical 태그:
https://example.tistory.com(루트 도메인)
이 경우, 카테고리 페이지와 루트 도메인 모두 동일한 canonical 태그를 가리키고 있음을 확인했습니다. 이는 크롤러가 페이지를 올바르게 인식하지 못하고, 카테고리 페이지가 루트 페이지의 복사본으로 간주될 수 있게 합니다.

카테고리 페이지 URL을 정확히 지정하는 Canonical 설정 방법
각 페이지에 대해 올바른 canonical 태그를 설정하는 것이 중요합니다. 이를 통해 검색 엔진이 각 페이지의 내용을 정확히 이해하고, canonical 오류를 해결할 수 있게 됩니다.
Canonical 태그 수정 및 설정 단계
- 페이지 URL 확인: 각 카테고리, TAG, 검색 페이지의 고유 URL을 확인하고 해당 URL을 canonical 태그에 적용합니다.
- 코드 수정 지침: HTML 설정에서 HTML 코드를 직접 수정하는 방식보다는, 동적으로 canonical 태그를 생성하거나 수정하는 것이 올바른 접근 방식입니다. 각 카테고리 페이지의 canonical 태그를 해당 페이지의 고유 카테고리 URL로 설정해야 합니다.
- 카테고리 제외 고려: 만약 카테고리 페이지를 검색 색인에 포함시키고 싶지 않다면, canonical 설정을 생략하거나 Noindex 태그를 사용하는 것도 하나의 방법입니다.
올바른 Canonical 태그 설정 예시
link rel="canonical" href="https://example.tistory.com/category/카테고리제목"
이렇게 canonical 태그를 설정하면 문제가 해결되며 구글 성능 검사에서 더 이상 오류 메시지가 나타나지 않게 됩니다.
주의 사항: 동적 페이지와 이중 Canonical
동적 페이지는 일괄적으로 HTML에 코드를 넣게 되면 안됩니다. 모든 페이지가 동일 CANONICAL과 동적으로 형성되는 CANONICAL 때문에 이중으로 CANONICAL이 설정되게 됩니다.
더불어 카테고리 페이지가 색인되면 긍정적인지 고민해야 합니다. 잘못하면 중복 페이지로 간주될 수 있기 때문에 카테고리 페이지 색인은 SEO에 별로 좋은 것은 아닐 수 있습니다.
중복 페이지를 방지하기 위해서 canonical 설정을 루투로 설정했을 가능성이 높아 보입니다.
그러나 굳이 루트로 설정해야 하는지는 의문입니다. 카테고리 페이지는 고유 카테고리 페이지로 지정하거나, 아예 색인이 안되게 하는 것도 방법 중 하나입니다.
Canonical 일괄 지정 스크립트 예제 (동적 수정)
아래는 카테고리 페이지의 canonical을 일괄적으로 동일 카테고리 기본 주소로 지정해서 색인이 안되게 지정하는 예제 코드입니다. 아래 코드를 자신의 블로그 주소로 변경 후 HEAD 부분에 넣게 되면 모든 카테고리 페이지 CANONICAL은 카테고리 기본 주소로 일괄 지정하게 됩니다.
script
document.addEventListener("DOMContentLoaded", function() {
var restrictedUrl = "https://도메인주소/category";
if (window.location.href.startsWith(restrictedUrl)) {
var canonicalTag = document.querySelector('link[rel="canonical"]');
if (canonicalTag) {
canonicalTag.href = restrictedUrl;
} else {
canonicalTag = document.createElement('link');
canonicalTag.rel = 'canonical';
canonicalTag.href = restrictedUrl;
document.head.appendChild(canonicalTag);
}
}
});
/script
올바른 설정을 통해 검색 엔진 지적 사항을 개선하고, 검색 색인의 문제도 향상시킬 수 있을 거라 생각합니다.
블로그 카테고리 페이지에서 ‘문서에 유효한 rel=canonical 없음’ 오류가 발생하는 이유는 무엇인가요?
카테고리 페이지의 canonical 태그가 각 페이지 고유 URL이 아닌 블로그의 루트 도메인(URL)으로 잘못 설정되어 있기 때문입니다. 이로 인해 구글 검색 엔진이 해당 페이지를 올바르게 인식하지 못하고, 중복 콘텐츠 문제나 색인 오류가 발생할 수 있습니다.
카테고리 페이지의 canonical 오류를 어떻게 확인할 수 있나요?
브라우저의 개발자 도구(Elements 탭 또는 Console 탭)를 열어 해당 카테고리 페이지의 head 섹션에 삽입된 link rel="canonical" 태그를 검사하면 됩니다. 만약 canonical URL의 href 속성이 현재 카테고리 페이지 URL이 아니라 루트 도메인 주소로 되어 있다면 오류가 발생한 것입니다.
유효한 canonical 없음 오류를 해결하려면 어떻게 해야 하나요?
각 카테고리 페이지마다 고유한 URL을 정확하게 가리키도록 canonical 태그를 수정해야 합니다. 예를 들어 link rel="canonical" href="https://example.tistory.com/category/카테고리명"와 같이 설정해야 합니다. 또는 제공된 스크립트 예제처럼 JavaScript를 사용하여 카테고리 페이지에 맞는 canonical 주소를 동적으로 지정하여 오류를 해결할 수 있습니다. 카테고리 페이지의 색인을 원치 않는다면, 색인 제외(Noindex)를 고려할 수도 있습니다.