301 리다이렉트
301 Redirect(301 리다이렉트)는 웹 페이지의 URL이 영구적으로 새로운 주소로 이동했음을 브라우저와 검색 엔진에 알리는 HTTP 상태 코드(301 Moved Permanently)입니다. 기존 URL로 유입되는 사용자와 검색 엔진 크롤러를 자동으로 새 URL로 안내하며, 기존 페이지가 보유한 링크 자산(link equity)을 새 URL로 이전하는 역할을 합니다.
301 Redirect(301 리다이렉트)는 웹 페이지의 URL이 영구적으로 새로운 주소로 이동했음을 브라우저와 검색 엔진에 알리는 HTTP 상태 코드(301 Moved Permanently)입니다. 기존 URL로 유입되는 사용자와 검색 엔진 크롤러를 자동으로 새 URL로 안내하며, 기존 페이지가 보유한 링크 자산(link equity)을 새 URL로 이전하는 역할을 합니다.
왜 중요한가
검색 엔진은 페이지의 순위를 결정할 때 해당 페이지를 가리키는 백링크의 수와 품질을 핵심 지표로 활용합니다. URL을 변경하면서 301 리다이렉트를 설정하지 않으면, 기존 URL이 축적해 온 모든 링크 자산이 소멸되어 검색 순위가 급락할 수 있습니다. Moz와 Ahrefs의 연구에 따르면, 올바르게 구현된 301 리다이렉트는 기존 페이지 링크 자산의 약 90~99%를 새 URL로 전달합니다. Google의 John Mueller 역시 "301 리다이렉트는 가치를 잃지 않는다(301s don't lose value)"고 공식적으로 확인한 바 있습니다. 따라서 도메인 이전, 사이트 리뉴얼, URL 구조 변경 등 영구적인 URL 변경이 발생할 때 301 리다이렉트는 SEO 관점에서 반드시 설정해야 하는 항목입니다.
301 vs 302 차이
| 구분 | 301 (Moved Permanently) | 302 (Found / Temporary) |
|---|---|---|
| 의미 | URL이 영구적으로 이동 | URL이 일시적으로 이동 |
| 링크 자산 이전 | 새 URL로 90~99% 전달 | 원래 URL에 잔류하며 새 URL로 이전되지 않음 |
| 검색 인덱스 | 시간이 지나면 기존 URL이 인덱스에서 제거되고 새 URL로 대체 | 기존 URL이 인덱스에 유지 |
| 브라우저 캐싱 | 영구적으로 캐싱됨 | 매 요청마다 원래 URL을 재확인 |
| 사용 예시 | 도메인 변경, URL 구조 개편, HTTP→HTTPS 전환 | A/B 테스트, 점검 페이지, 계절성 프로모션 |
Google은 기술적으로 301과 302 모두 처리할 수 있다고 밝혔지만, 영구적인 변경에 302를 사용하면 검색 엔진이 원래 URL을 계속 크롤링하게 되어 크롤링 예산(crawl budget)이 낭비되고, 링크 자산이 의도한 대로 이전되지 않을 수 있습니다. 반드시 상황에 맞는 코드를 선택하는 것이 중요합니다.
설정 방법
Apache (.htaccess)
Redirect 301 /old-page https://www.example.com/new-page
Nginx (nginx.conf)
server {
location /old-page {
return 301 https://www.example.com/new-page;
}
}
Next.js (next.config.js)
module.exports = {
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true, // 301
},
];
},
};
설정 후에는 반드시 Google Search Console의 URL 검사 도구를 사용하여 리다이렉트가 올바르게 작동하는지, 새 URL이 정상적으로 인덱싱되는지 확인해야 합니다. 또한 리다이렉트는 최소 1년 이상 활성 상태를 유지하는 것이 권장됩니다.
자주 하는 실수
- 리다이렉트 체인(Redirect Chain): A→B→C처럼 여러 단계의 리다이렉트를 거치면 각 단계마다 링크 자산이 소실되고, 페이지 로딩 속도도 느려집니다. 가능한 한 A→C로 직접 연결해야 합니다.
- 무한 리다이렉트 루프: A→B, B→A처럼 서로를 가리키는 설정은 브라우저에서 "리다이렉트 횟수가 너무 많습니다(ERR_TOO_MANY_REDIRECTS)" 오류를 발생시킵니다. 설정 후 반드시 테스트가 필요합니다.
- 관련 없는 페이지로 리다이렉트: 기존 페이지와 내용이 전혀 다른 페이지로 301 리다이렉트를 설정하면, Google이 이를 소프트 404(soft 404)로 판단하여 링크 자산을 전달하지 않습니다. 반드시 내용이 유사하거나 동일한 1:1 대응 URL로 연결해야 합니다.
- 302를 301 대신 사용: 영구적인 URL 변경에 302를 사용하면 검색 엔진이 기존 URL을 계속 크롤링하며, 링크 자산이 새 URL로 이전되지 않습니다.
- 브라우저 캐시 미고려: 301 리다이렉트는 브라우저에 영구적으로 캐싱됩니다. 잘못 설정한 301을 되돌리더라도 사용자의 브라우저에는 이전 설정이 남아 있을 수 있으므로, 신중하게 적용해야 합니다. 필요 시
Cache-Control: no-cache헤더를 함께 설정하는 것이 안전합니다.
관련 인블로그 게시물
inblog에서 활용하기
inblog 대시보드의 리다이렉트 관리 기능에서 308(영구, 301과 동치) 및 307(임시) 리다이렉트를 코드 작성 없이 설정할 수 있습니다.