Skip to content

[refactor]: 위스키 상세 페이지 라우팅 구조 개선 — /search/[category]/[id] → /alcohol/[id] #229

@hyejj19

Description

@hyejj19

who

FE

what

위스키 상세 페이지를 /search/[category]/[id]에서 /alcohol/[id]로 분리하여 독립 라우트로 전환

why

현재 위스키 상세 페이지가 /search 하위에 위치하여 의미적 계층 불일치 발생:

  1. 의미적 문제: 위스키는 독립된 엔티티인데, URL이 "검색의 하위 리소스"로 표현됨. 공유 링크/북마크 관점에서 /search/...는 부자연스러움
  2. SEO 중복 URL: 동일 위스키(id=42)에 /search/SINGLE_MALT/42, /search/all/42 등 복수 URL 가능
  3. layout 조건 분기: search/layout.tsx에서 pathname 기반으로 네비 표시 여부 결정 → 확장성 낮음
  4. 불필요한 URL 파라미터: [category]는 위스키의 속성이지 라우트 계층에 필요한 정보가 아님. 상세 API도 id만으로 호출 가능

변경 계획

라우팅 변경

현재 변경 후
/search/[category]/[id] /alcohol/[id]
/search/[category]/[id]/reviews /alcohol/[id]/reviews

영향범위 (17개 파일)

라우트 상수 전파 (8개)ROUTES.SEARCH.ALL()ROUTES.ALCOHOL.DETAIL()로 rename

  • ListItem.tsx, ListItemRating.tsx, WhiskeyListItem.tsx, ReviewListItem.tsx (explore)
  • PicksListItem.tsx, RatingsListItem.tsx, AlcoholInfo.tsx, ReviewActionDropdown.tsx

하드코딩 URL 수정 (4개)

  • api/alcohol/transformers.ts — path 생성
  • components/feature/home/AlcoholItem.tsx — fallback href
  • utils/seo/generateAlcoholSchema.ts — JSON-LD URL
  • app/sitemap.ts — sitemap URL

구조적 변경 (3개)

  • search/[category]/[id]/layout.tsxparams.category 제거, canonical URL 단순화
  • search/[category]/[id]/page.tsx — 폴더 이동 + 공유 URL + 리뷰 더보기 링크
  • search/[category]/[id]/reviews/page.tsx — 폴더 이동

테스트 수정 (2개)

  • loginRedirect.test.ts, transformers.test.ts

추가 작업

  • 기존 /search/[category]/[id] URL에 대한 301 리다이렉트 설정 (next.config.js) — SEO 크롤링 대응

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions