사용자를 404로 보내던 푸터 링크 고정
목차
footer 에 있던 이용약관·쿠키 정책 링크를 타고 들어가면 404가 떴다. 누군가 페이지는 링크했는데 실제 콘텐츠가 없었던 상황. 이번에 /cookies 와 /policy 페이지를 새로 만들어서 이 문제를 해결했다.
발견부터 수정까지
이런 류의 버그는 보통 이렇게 생긴다. 초반 MVP 빌드할 때 법적 페이지는 "필수지만 중요하지 않은 것"으로 분류돼서 footer 스텁만 먼저 넣는다. "나중에 추가하자"고 생각하면서. 그런데 "나중"이 영원히 오지 않는다. PR 리뷰어도 "이건 필수고 진짜 들어올 거니까 OK" 하고 merge하고, 배포 체크리스트에도 안 들어가 있으니 누구도 실제로 404가 되는 걸 못 본다. 결국 사용자가 직접 클릭했을 때 404를 마주친다.
사용자 경험 관점에선 이게 꽤 나쁜 상황이다.
- 규정·정책을 확인하려던 사용자가 404를 보면 서비스 신뢰도가 떨어진다.
- 특히 결제·개인정보 관련 페이지라면 법적 책임 문제도 생길 수 있다.
- "이 서비스는 정책이 명확하지 않은 건가?" 하는 의심을 주기 쉽다.
변경 내용: 두 페이지 추가
| 파일 | 역할 |
|---|---|
src/app/cookies/page.tsx |
쿠키 사용 정책 페이지 |
src/app/policy/page.tsx |
개인정보·이용약관 페이지 |
두 파일 모두 src/app/ 직하에 추가했다. Next.js App Router 구조에서 /cookies, /policy 라우트가 자동으로 생성된다. 이제 footer 링크가 유효한 페이지를 가리킨다.
// 예상되는 기본 구조
export default function CookiesPage() {
return (
<main>
<h1>쿠키 정책</h1>
<p>당사 서비스에서 사용하는 쿠키 목록...</p>
</main>
);
}
왜 이게 발생했을까
이런 상황은 다음 이유로 반복된다:
- 필수지만 관심사에서 밀린다 — 실제 비즈니스 기능 (결제, 검색, 추천)에 비해 법적 페이지는 "체크박스" 같이 느껴진다.
- 배포 체크리스트 누락 — 배포 전에 "내부 링크 404 체크" 같은 항목이 없으면 놓친다.
- 로컬 테스트의 한계 — 개발자가 로컬에서 테스트할 때 footer 링크를 클릭하는 사람은 드물다. 실제 사용자 흐름을 모니터링하지 않으면 이런 gap이 남는다.
배운 점과 앞으로의 관점
이 commit 이후로 나는 다음을 생각해본다:
1. 필수 페이지 체크리스트 문서화
- cookies, policy, about, terms 같은 페이지는 "프로젝트 시작 시 링크는 반드시 유효해야 한다"는 규칙을 명시해야 한다.
- PR 템플릿에 "new external/footer link 추가했으면 해당 페이지도 같이 제출" 같은 항목을 추가하면 좋다.
2. 자동 모니터링
- 배포 후에 footer/nav 의 모든 내부 링크를 크롤링해서 404 응답을 감지하는 간단한 헬스체크를 하면 좋다.
- 사람이 매번 클릭하는 것보다 자동화가 훨씬 신뢰할 수 있다.
3. 팀 리딩 관점
- 이런 "필수지만 덜 매력적인" 작업을 누군가는 해야 한다. 스프린트 플래닝에서 "debt" 아이템으로 명시적으로 할당해야 끝난다.
- 프리랜서·신입 온보딩 때 "여기 footer 링크 깨진 거 고쳐봐" 같은 건 좋은 첫 task 다. 전체 워크플로우(코드 추가 → 테스트 → 배포)를 경험하면서 낮은 risk로 contribute 할 수 있다.
4. 비슷한 체크포인트들
- 다른 서비스에서도 보면, sitemap.xml, robots.txt, 404 페이지, 에러 로깅 같은 "필수이지만 뒷전인" 항목들이 항상 있다.
- 이런 걸 checklist 화하고 배포 파이프라인에 넣는 게 실수를 줄인다.
이번 작업은 작은 commit 이지만, "사용자가 실제로 마주치는 경험"을 다시 생각하게 해줬다. 링크 한 개 깨져 있는 것도 그 페이지에 들어온 사용자 입장에선 서비스 전체의 신뢰도가 떨어진다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.