피드로 돌아가기
I had two blog posts ranking against each other. Here's the Next.js fix
Dev.toDev.to
Frontend

Keyword Cannibalization 해결을 통한 SEO 신호 통합 및 308 Redirect 최적화

I had two blog posts ranking against each other. Here's the Next.js fix

CastNova2026년 5월 17일6intermediate

Context

유사한 키워드를 타겟팅한 중복 포스트 발생으로 인한 Google 검색 순위 정체 현상 분석. inline JSX 기반의 posts Map 구조를 사용하는 Next.js 아키텍처 내에서 콘텐츠 통합 및 URL 정규화 필요성 제기.

Technical Solution

  • Link Equity 보존을 위해 단순 삭제나 noindex 대신 Permanent Redirect(308)를 적용한 URL 통합 전략 수립
  • Next.js next.config.tsredirects 설정을 통한 프레임워크 레벨의 경로 제어 및 308 상태 코드 송출
  • publishedAt 신호 손실 방지를 위해 updatedAt 필드를 분리한 BlogPost 인터페이스 확장 설계
  • JSON-LD의 datePublisheddateModified를 구분 렌더링하여 Google Freshness 알고리즘의 신뢰도 유지
  • rg (ripgrep) 기반의 전수 조사를 통해 내부 링크의 Redirect Hop을 제거하는 정적 분석 및 정제 수행
  • Google Rich Results Test를 통한 JSON-LD 스키마 정합성 검증 및 GSC 수동 색인 요청으로 재평가 주기 단축

- 중복 콘텐츠 통합 시 인바운드 링크가 많은 기존 URL을 Survivor로 선정했는가? - Redirect 설정 시 301/308 상태 코드가 모니터링 툴의 Alert 조건과 일치하는지 확인했는가? - 업데이트 날짜 적용 시 기존 `date` 필드를 덮어쓰지 않고 `updatedAt`을 별도로 관리하는가? - JSON-LD에 `dateModified` 속성을 포함하여 콘텐츠 최신성을 명시적으로 전달하고 있는가? - 전역 검색을 통해 내부 링크 내의 Dead Link나 Redirect 경로를 모두 제거했는가?

원문 읽기