티스토리 블로그에서 발생하는 카테고리 파라미터(?category=) URL의 중복 색인 문제를 해결하고, 자바스크립트(JavaScript)를 이용해 noindex 메타 태그를 동적으로 삽입하여 블로그의 SEO 점수 하락을 방지하는 실전 방법입니다.
왜 카테고리 URL이 블로그의 적이 되는가?
티스토리 블로그를 운영하다 보면 콘텐츠가 쌓일수록 중복 색인과 중복 노출 문제가 심각해지는 시점이 옵니다. 특히 Google이나 Bing 같은 검색 엔진이 category가 포함된 URL을 원본 포스팅과 별개의 페이지로 인식하여 크롤링할 때 문제가 발생합니다.
검색 엔진은 티스토리의 모든 경로를 탐색하려 합니다. 이때 발생하는 파라미터 URL은 중복 콘텐츠 문제, 낮은 품질 페이지 평가를 유발하며, 결과적으로 블로그 전체의 SEO 지수를 갉아먹는 원인이 됩니다. 이러한 현상을 방치하면 정성껏 작성한 포스팅이 검색 결과에서 누락되거나 순위가 밀리는 현상을 겪게 됩니다.
중복 URL의 실체와 검색 엔진의 인식 방식
동일한 글임에도 불구하고 주소가 여러 개로 나뉘는 현상을 이해해야 합니다. 아래는 전형적인 중복 페이지의 예시입니다.
- 정상 포스팅 URL: https://blog.tistory.com/100 (검색 엔진이 선호하는 원본)
- 파라미터 포함 URL: https://blog.tistory.com/100?category=123 (중복 페이지)
- 카테고리 리스트 URL: https://blog.tistory.com/category/주제 (유사 콘텐츠 나열)
사실상 동일한 콘텐츠를 보여줌에도 불구하고, 검색 엔진은 이를 각각 다른 페이지로 수집하려고 시도합니다. 이 과정에서 크롤링 예산(Crawl Budget)이 낭비되고, 원본 글의 가치가 분산되어 검색 순위 경쟁에서 밀려나게 됩니다. 특히 카테고리 페이지 색인이 원본보다 우선될 경우 클릭률이 저하되는 심각한 문제가 발생합니다.
| 항목 | 상세 영향 | SEO 위험도 |
|---|---|---|
| 콘텐츠 가치 분산 | 백링크와 사용자 반응 점수가 여러 URL로 쪼개져 힘이 약해짐 | 높음 |
| 낮은 품질 평가 | 내용은 같은데 URL만 다른 페이지가 많아져 ‘스팸’ 사이트로 오인 가능 | 매우 높음 |
| 클릭률(CTR) 저하 | 검색 결과에 복잡한 파라미터 주소가 노출되어 사용자 신뢰도 하락 | 중간 |
| 색인 생성 오류 | 구글 서치 콘솔에 ‘중복된 페이지, 사용자가 선언한 캐노니컬 없음’ 오류 급증 | 매우 높음 |
동적 Meta Robots 제어 스크립트
티스토리는 서버의 robots.txt나 .htaccess 파일을 직접 수정할 수 없는 폐쇄형 구조입니다. 따라서 브라우저가 페이지를 읽는 즉시 자바스크립트를 실행하여 meta name=”robots” 태그를 삽입하는 방식이 유일하고도 효과적인 해결책입니다.
아래 코드를 복사하여 스킨 편집 화면의 head 태그 바로 아래에 삽입하세요.
script
document.addEventListener("DOMContentLoaded", function () {
const currentUrl = window.location.href;
// URL에 category라는 문구가 포함되어 있는지 검사
if (currentUrl.includes("category")) {
let existingMeta = document.querySelector('meta[name="robots"]');
if (existingMeta) {
// 기존 robots 메타가 있다면 내용을 noindex로 수정
existingMeta.setAttribute("content", "noindex, nofollow");
} else {
// 메타 태그가 없다면 새로 생성하여 head에 추가
let metaTag = document.createElement("meta");
metaTag.name = "robots";
metaTag.content = "noindex, nofollow";
document.head.appendChild(metaTag);
}
}
});
/script
코드의 핵심 기능 요약
- noindex: 검색 엔진에게 이 페이지를 색인(저장)하지 말라고 명령합니다.
- nofollow: 이 페이지에 있는 링크를 따라가지 말라고 명령하여 크롤링 낭비를 막습니다.
- 동적 실행: 일반 포스팅 URL(/100)에서는 작동하지 않고, 오직 문제가 되는 카테고리 URL에서만 실행됩니다.
4. 이미지 가이드: 실제 적용 방법 및 확인
코드를 적용한 후에는 반드시 구글 서치 콘솔이나 페이지 소스 보기를 통해 정상적으로 noindex가 반영되었는지 확인해야 합니다.



질문 1: 이 코드를 넣으면 기존에 색인된 카테고리 글들이 삭제되나요?
답변: 네, 검색 엔진이 해당 페이지를 다시 크롤링할 때 noindex 태그를 발견하면 점진적으로 검색 결과에서 해당 URL을 제거합니다. 이는 중복 문제를 해결하는 정상적인 과정입니다.
질문 2: 카테고리 페이지 자체가 검색에 안 나오면 방문자가 줄어들지 않을까요?
답변: 카테고리 페이지는 단순히 글 목록을 보여주는 페이지입니다. 개별 포스팅(원본)은 여전히 색인되므로 유입에는 타격이 없으며, 오히려 원본 글의 노출 순위가 상승하여 장기적으로는 이득입니다.
질문 3: 구글 서치 콘솔에서 ‘색인이 생성됨’이라고 뜨는 파라미터 URL은 어떻게 하나요?
답변: 코드를 적용한 후 서치 콘솔의 ‘삭제’ 메뉴를 통해 해당 URL 패턴을 일시적으로 제거 요청하거나, 구글이 스스로 업데이트하기를 기다리면 됩니다.
질문 4: 자바스크립트 방식이 100% 안전한가요?
답변: 구글 크롤러는 자바스크립트를 매우 잘 해석하므로 가장 권장되는 방식입니다. 다만, 완벽을 기하려면 스킨 설정에서 ‘카테고리 글 더보기’ 기능을 끄거나 주소를 단순화하는 설정을 병행하는 것이 좋습니다.
질문 5: 초보자도 쉽게 따라 할 수 있나요?
답변: 메모장이나 스킨 편집기의 HTML 소스 창에 복사해서 붙여넣기만 하면 되므로 매우 간단합니다. 저장 전 미리보기를 통해 블로그 레이아웃에 이상이 없는지만 확인하세요.
블로그 규모가 커질수록 데이터의 무결성을 유지하는 것이 중요합니다. 아무리 좋은 글을 써도 검색 엔진이 중복된 쓰레기 데이터로 인식한다면 노출 기회는 줄어들 수밖에 없습니다. 나중에 색인 꼬임 현상으로 후회하기 전에 지금 조치하는 것이 최선의 선택입니다. 또한, 카노니컬(Canonical) 태그가 본문 주소를 정확히 가리키고 있는지 주기적으로 점검하여 검색 엔진에게 명확한 신호를 보내주세요.