who
FE
what
위스키 상세 페이지를 /search/[category]/[id]에서 /alcohol/[id]로 분리하여 독립 라우트로 전환
why
현재 위스키 상세 페이지가 /search 하위에 위치하여 의미적 계층 불일치 발생:
- 의미적 문제: 위스키는 독립된 엔티티인데, URL이 "검색의 하위 리소스"로 표현됨. 공유 링크/북마크 관점에서
/search/...는 부자연스러움
- SEO 중복 URL: 동일 위스키(id=42)에
/search/SINGLE_MALT/42, /search/all/42 등 복수 URL 가능
- layout 조건 분기:
search/layout.tsx에서 pathname 기반으로 네비 표시 여부 결정 → 확장성 낮음
- 불필요한 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.tsx — params.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 크롤링 대응
who
FE
what
위스키 상세 페이지를
/search/[category]/[id]에서/alcohol/[id]로 분리하여 독립 라우트로 전환why
현재 위스키 상세 페이지가
/search하위에 위치하여 의미적 계층 불일치 발생:/search/...는 부자연스러움/search/SINGLE_MALT/42,/search/all/42등 복수 URL 가능search/layout.tsx에서 pathname 기반으로 네비 표시 여부 결정 → 확장성 낮음[category]는 위스키의 속성이지 라우트 계층에 필요한 정보가 아님. 상세 API도id만으로 호출 가능변경 계획
라우팅 변경
/search/[category]/[id]/alcohol/[id]/search/[category]/[id]/reviews/alcohol/[id]/reviews영향범위 (17개 파일)
라우트 상수 전파 (8개) —
ROUTES.SEARCH.ALL()→ROUTES.ALCOHOL.DETAIL()로 renameListItem.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 hrefutils/seo/generateAlcoholSchema.ts— JSON-LD URLapp/sitemap.ts— sitemap URL구조적 변경 (3개)
search/[category]/[id]/layout.tsx—params.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 크롤링 대응