레거시 경로 영구 리다이렉트로 검색 트래픽 보존
목차
기존 /{slug} 형태의 레거시 URL 구조를 새로운 /p/{id} 형태로 정리하면서, 301(Moved Permanently) 상태 코드를 이용해 검색 엔진과 사용자를 자동으로 안내하는 작업을 했다. 단순히 URL을 바꾼 것이 아니라, SEO 손실을 방지하고 기존 유입경로를 보존하는 리다이렉트 전략이 핵심이었다.
URL 구조 정리가 필요했던 이유
생각해보니 대부분의 서비스는 성장 초기에 URL 구조를 여러 번 손본다. 초기에는 slug(사람이 읽기 쉬운 텍스트 경로)로 시작하는데, 운영하다 보면 몇 가지 문제가 생긴다. slug는 컨텐츠 제목이나 설명 같은 가변 데이터에 의존하기 때문에, 나중에 제목을 수정하거나 특수 문자 처리가 필요해질 때 URL이 깨질 수 있다. 반면 id는 불변이고 유니크하므로 훨씬 안정적이다. 추가로 ID 기반 구조는 인덱싱과 캐싱도 단순하다.
하지만 문제는 이미 존재하는 모든 레거시 URL이 구글, 네이버 같은 검색 엔진에 인덱싱되어 있다는 것. 사용자들의 북마크, 블로그 백링크, SNS 공유 링크 등도 다 레거시 경로를 가리키고 있다. 만약 아무 처리 없이 URL을 바꾼다면 이 모든 트래픽이 404로 떨어진다.
301 리다이렉트를 선택한 이유
이 상황에서 301(Moved Permanently)을 쓰는 게 정석이다. 몇 가지 선택지가 있었다:
| 방법 | 사용 사례 | 단점 |
|---|---|---|
| 301 리다이렉트 | 영구적 URL 변경 | 매 요청마다 리다이렉트 오버헤드 |
| 302 리다이렉트 | 임시 변경 | 검색 엔진이 원래 URL을 계속 크롤링 |
| Canonical 태그 | 중복 컨텐츠 통합 | 검색 엔진 선택지 제공 (보장 X) |
| Meta refresh | 보조 수단 | 검색 엔진 인식 떨어짐 |
301의 가장 큰 장점은 검색 엔진에게 "이 페이지는 영구적으로 새로운 주소로 이동했다"고 명확히 알린다는 것. 그러면 구글이나 네이버가 자동으로 색인을 업데이트해주고, 기존 페이지에 쌓인 도메인 권위(domain authority)도 새로운 URL로 이전된다. 결국 검색 순위 손실을 최소화할 수 있다.
Astro에서의 구현 방식
Astro의 동적 라우팅 파일 [...slug].astro 에서 catch-all 패턴으로 모든 레거시 경로를 받은 후, 파라미터를 파싱해서 새로운 경로로 리다이렉트한다. 대략 이런 로직:
// src/pages/[...slug].astro
export async function getStaticPaths() {
// 모든 legacy slug-based URL 목록 수집
const posts = await fetchAllPosts()
return posts.map(post => ({
params: { slug: post.legacySlug },
props: { id: post.id }
}))
}
const { id } = Astro.props
// 301 리다이렉트 처리
return Astro.redirect(`/p/${id}`, 301)
빌드 타임에 모든 레거시 URL을 감지하고, 정적으로 각각에 대한 리다이렉트 페이지를 생성한다. 사용자가 레거시 경로로 접근하면 301 상태 코드와 함께 새로운 URL로 자동 리다이렉트된다.
회고: 비슷한 상황에서 주의할 점들
이런 작업을 하면서 느낀 건데, URL 구조 변경은 생각보다 영향 범위가 넓다. 검색 엔진뿐 아니라 분석 도구(GA, 내부 대시보드), API 클라이언트, 모바일 앱, 슬랙 봇 같은 다양한 시스템들이 URL에 의존하고 있다.
특히 주의할 점은 리다이렉트 체인이다. 레거시 URL A → 중간 URL B → 최종 URL C 이렇게 여러 번 점프하면 성능도 떨어지고 검색 엔진이 추적을 포기할 수 있다. 가능하면 한 번의 리다이렉트로 끝내는 게 좋다.
또 하나는 리다이렉트 기간이다. 검색 엔진이 완전히 재인덱싱하는 데 수주가 걸릴 수 있으므로, 최소 2-3개월은 레거시 경로에 대한 리다이렉트를 유지해야 한다. 너무 빨리 제거하면 여전히 구 링크로 들어오려는 사용자들이 404를 만난다.
마지막으로, 리다이렉트가 정상 작동하는지 검증하는 게 중요하다. 샘플로 몇 개 레거시 URL을 테스트하고, 검색 콘솔에서 리다이렉트 상태를 모니터링하면서 점진적으로 진행했다. 이런 식으로 하면 만약 문제가 있어도 빨리 발견해서 롤백할 수 있다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.