홈 title이 CMS 설정을 반영하지 않던 SEO 버그
목차
검색 엔진이 수집하는 홈 페이지의 <title> 태그가 관리자가 CMS에서 설정한 값(cms_site.meta.seo.title)과 달라서 발생하던 버그를 수정했다. Base.astro라는 전사 레이아웃 파일의 한 줄 배선 작업이었지만, 그 영향은 꽤 크다.
왜 title 태그가 중요한가
SEO 최적화에서 <title> 태그는 최상위 신호 중 하나다. 검색 엔진이 페이지를 크롤링할 때 가장 먼저 보는 메타정보고, 검색 결과 페이지에 노출되는 클릭 문구 그 자체다. 마케팅팀이 브랜드 메시지나 핵심 키워드를 담아 "홈 title을 '우리 서비스 - 핵심 가치 제안'" 같이 설정했는데, 실제 HTML에 다른 값이 들어가 있다면 그 설정은 의미가 없다.
더 큰 문제는 코드와 설정의 불일치다. 마케팅이나 운영팀이 CMS 관리자 페이지에서 사이트 메타정보를 바꿔도, 개발팀이 처리하지 않으면 실제 웹 페이지에는 반영되지 않는다. 이런 갭이 생기면 신뢰도 떨어지고, 버그 신고와 follow-up이 반복된다.
무엇을 고쳤나
src/layouts/Base.astro
┗ <title> 렌더링 로직을 DB의 cms_site.meta.seo.title 값으로 배선
Base.astro는 Astro 프로젝트에서 모든 페이지의 기본 레이아웃을 담당하는 파일이다. 여기서 수정하면 그 파일을 import하는 모든 페이지에 영향을 준다. 즉, 한 군데 고치는 것만으로 사이트 전체 홈페이지 title이 동적으로 DB 값을 따르게 된다.
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
| title 출처 | 하드코딩 또는 default 값 | DB cms_site.meta.seo.title |
| 관리자 설정 반영 | ❌ 안 됨 | ✅ 자동 반영 |
| CMS 수정 후 반영 속도 | 코드 배포 필요 | 즉시 (캐시 만료 후) |
회고: 코드와 설정을 언제 어떻게 연동할 것인가
이 수정 자체는 간단했지만, 뒤에서 배우는 점들이 있다.
첫째, 설정값을 하드코딩하지 말 것. 사이트의 메타정보(title, description, 로고, 저작권 등)는 언제든 마케팅팀이 바꿀 수 있는 "살아있는 데이터"다. 코드에 박아두면 매번 배포가 필요하고, 실수 가능성도 크다. cms_site 같은 중앙 설정 테이블이나 CMS 시스템이 있다면 처음부터 거기서 가져오는 방식으로 설계해야 한다.
둘째, Base.astro나 root layout 같은 파일은 영향범위가 크다. 모든 페이지가 의존하는 공통 컴포넌트를 수정할 때는 "실제로 모든 페이지가 제대로 렌더링되나?" 검증이 필수다. SEO title 배선 같은 경우 단순하지만, 레이아웃 구조나 스타일링을 만지면 의도하지 않은 side effect가 생길 수 있다.
셋째, 운영팀과의 협업이 중요하다. 이런 버그는 보통 "CMS에서 title을 바꿨는데 반영이 안 됨" 같은 형태로 신고된다. 버그 신고가 오면 단순히 "수정했습니다"가 아니라 "앞으로 CMS에서 바꾸면 자동 반영됩니다"라고 명확히 안내할 필요가 있다. 팀의 신뢰도가 달라진다.
마지막으로, 이런 류의 버그는 자동화로 방지할 수 있을까? 테스트 코드에서 "홈 페이지 title이 cms_site.meta.seo.title과 일치하는가"를 체크하는 e2e 테스트를 추가하면, 다음에 누가 코드를 건드릴 때 검증 안 하고 넘어가는 상황을 줄일 수 있다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.