리다이렉트 규칙 생성기

이전 주소 → 새 주소 목록으로 nginx·Apache(.htaccess)·Netlify 리다이렉트 규칙을 만듭니다. www 통일, https 강제, 도메인 전체 이전 모드 지원.

한 줄에 이전주소 새주소. 이전 주소는 경로(/old)로, 새 주소는 경로나 전체 주소 둘 다 됩니다.
📁 매핑 목록 파일(.txt/.csv)을 끌어다 놓거나 클릭해서 선택
엑셀에서 두 열을 복사해 붙여넣어도 됩니다 · 최대 8MB
옵션
💡 정규식 모드에서는 * 를 쓰면 자동으로 (.*) 로 바꾸고, 새 주소의 * 또는 $1 자리에 잡힌 값을 넣습니다. 예: /blog/* → /posts/*
nginx 설정

상태 코드 고르기

코드언제 쓰나SEO
301영구 이동사이트 개편, 도메인 이전, 주소 구조 변경기존 평가가 새 주소로 넘어감. 개편이면 이걸 쓰세요
302임시 이동이벤트 페이지, 점검 안내, A/B 테스트옛 주소를 계속 색인함. 개편에 쓰면 사고
308영구 (메서드 유지)API 등 POST 요청을 그대로 넘겨야 할 때301과 동일하게 취급됨
307임시 (메서드 유지)HSTS 내부 리다이렉트 등302와 동일하게 취급됨
옛 페이지를 전부 홈으로 몰지 마세요. 내용이 대응하지 않는 리다이렉트를 구글은 소프트 404로 취급해 기존 평가를 넘겨주지 않습니다. 옛 글 하나는 그와 가장 가까운 새 글 하나로 1:1 연결하고, 정말 대응할 페이지가 없으면 차라리 410(Gone)을 주는 편이 낫습니다.

리다이렉트 규칙 생성기란?

사이트를 개편하거나 도메인을 옮기면 예전 주소로 들어오는 방문자와 검색엔진을 새 주소로 넘겨 줘야 합니다. 이때 301(영구 이동)로 제대로 넘기지 않으면 그동안 쌓은 검색 순위가 그대로 증발합니다. 이 도구는 이전 주소와 새 주소 목록을 표에 넣으면 nginx·Apache(.htaccess)·Netlify 세 가지 형식의 규칙을 동시에 만들어 줍니다. www 통일이나 http→https 강제처럼 사이트 전체에 거는 규칙은 전용 모드로 한 번에 뽑을 수 있고, /old/글번호 → /new/글번호 같은 패턴 이전을 위한 정규식 규칙도 지원합니다.

사용 방법

  1. 형식을 고릅니다 — nginx, Apache(.htaccess), Netlify 중 서버에 맞는 것을 선택합니다.
  2. 개별 이전이라면 표에 이전 경로와 새 주소를 한 줄씩 넣습니다. 붙여넣기 모드에서는 "이전주소 새주소" 를 한 줄에 적어도 됩니다.
  3. 301(영구)인지 302(임시)인지 고릅니다. 개편·도메인 이전은 301이 정답입니다.
  4. 사이트 전체 규칙이 필요하면 "도메인 전체 이전" 모드에서 www 통일·https 강제·도메인 변경을 설정합니다.
  5. 생성된 규칙을 설정 파일에 붙여넣고 적용합니다. nginx는 nginx -t 로 문법 검사 후 reload 하세요.

리다이렉트 규칙 생성기 사용 가이드

실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.

302로 개편했다가 벌어지는 일

주소가 영영 바뀐 거라면 301입니다. 이건 취향 문제가 아닙니다. 301은 "옛 주소는 잊고 새 주소를 쓰라"는 신호라 검색엔진이 색인을 새 주소로 옮기고 기존 평가를 넘겨줍니다. 302는 "잠깐 다른 데 다녀오라"는 뜻이라 검색엔진은 옛 주소를 계속 색인해 둡니다.

개편에 302를 쓰면 몇 달 뒤 이런 상태가 됩니다. 검색결과에는 옛 주소가 계속 뜨고, 새 주소는 색인되지 않으며, 새로 쌓은 링크의 평가가 옛 주소에 갇혀 있습니다. 나중에 301로 고쳐도 다시 옮겨지는 데 또 시간이 걸립니다.

반대로 되돌릴 계획이 있는데 301을 쓰는 것도 위험합니다. 브라우저는 301을 캐시에 오래 저장하기 때문에, 규칙을 지워도 방문자 브라우저는 한동안 계속 새 주소로 갑니다. 이벤트 페이지나 점검 안내처럼 곧 되돌릴 것이라면 302를 쓰세요.

308·307은 각각 301·302와 같지만 POST 같은 메서드를 그대로 유지합니다. 일반 웹페이지 이전에는 301이면 충분하고, API 엔드포인트를 옮길 때 308을 고려하세요. 검색엔진은 308을 301과, 307을 302와 동일하게 취급합니다.

체인과 루프 — 이 도구가 잡아 주는 것

리다이렉트 체인은 A→B→C처럼 이어지는 상태입니다. 개편을 두 번 하면 자연스럽게 생깁니다. 첫 개편에서 /old→/new 를 걸어 뒀는데, 두 번째 개편에서 /new→/final 을 추가하면 옛 주소로 들어온 사람은 두 번 튕깁니다.

구글은 대체로 몇 단계까지는 따라가지만, 단계마다 왕복이 생겨 느려지고 크롤링 예산이 낭비됩니다. 모바일에서는 체감 속도 차이가 큽니다. 해법은 간단합니다 — 옛 규칙의 목적지를 최종 주소로 직접 바꿉니다. /old→/final, /new→/final 두 줄로 만들면 됩니다.

이 도구는 입력한 규칙 안에 체인이 있으면 경고하고 실제 경로를 보여 줍니다. 자기 자신으로 가는 무한 루프도 잡습니다. 다만 이미 서버에 적용되어 있는 옛 규칙과의 체인은 알 수 없으니, 적용 전에 기존 설정 파일을 함께 확인해야 합니다.

bash
# 실제로 몇 단계를 거치는지 확인 — -L 로 끝까지 따라갑니다
curl -sIL https://example.com/old-page | grep -E "^HTTP|^[Ll]ocation"

# 결과 예시 (체인 2단계 — 고쳐야 함)
#   HTTP/2 301
#   location: https://example.com/new-page
#   HTTP/2 301
#   location: https://example.com/final-page
#   HTTP/2 200
홈(/)으로 보내는 규칙이 3개 이상이면 경고가 뜹니다. 내용이 대응하지 않는 리다이렉트를 구글은 소프트 404로 취급해 평가를 넘겨주지 않습니다. 대응할 새 페이지가 정말 없다면 홈으로 보내지 말고 410(Gone)을 주는 편이 낫습니다 — 검색엔진이 색인에서 더 빨리 지웁니다.

사이트 개편 시 URL 이전 절차

순서를 지키면 순위 손실을 최소화할 수 있습니다. 실무에서 검증된 순서입니다.

  1. 옛 주소를 빠짐없이 모읍니다 — 서치 콘솔의 페이지 보고서(색인된 주소), 기존 sitemap.xml, 웹서버 access log, 네이버 서치어드바이저를 합칩니다. 로그를 쓰면 검색엔진이 모르는 주소까지 잡힙니다.
  2. 유입이 많은 주소부터 1:1로 매핑합니다. 시간이 없으면 상위 20%만 정확히 매핑해도 트래픽의 대부분을 지킵니다.
  3. 엑셀 두 열(옛 주소 / 새 주소)로 만든 매핑 표를 그대로 복사해 이 도구에 붙여넣습니다.
  4. 규칙을 스테이징에 먼저 적용해 curl -I 로 몇 개 찍어 본 뒤 운영에 반영합니다(nginx -t → systemctl reload nginx).
  5. 사이트맵을 새 주소 목록으로 교체해 다시 제출하고, 내부 링크도 새 주소로 직접 고칩니다. 자기 사이트 안에서 리다이렉트를 타게 두지 마세요.
  6. 도메인까지 바꿨다면 서치 콘솔의 주소 변경 도구를 씁니다. 옛 도메인은 최소 1년 이상 301을 건 채로 유지합니다.
  7. 몇 주간 서치 콘솔의 색인 현황과 404 오류를 지켜보며 빠뜨린 주소를 추가합니다.
엑셀에서 두 열을 복사해 붙여넣거나 .csv 파일을 드래그해 올려도 됩니다. 구분자는 공백·탭·쉼표·화살표(→, ->, =>)를 모두 인식합니다.

서버별로 다른 함정

같은 규칙이라도 서버마다 걸리는 지점이 다릅니다.

  • nginx — location 은 쿼리스트링(?id=3)을 매칭하지 못합니다. 이 도구는 ?가 든 주소를 $request_uri 를 비교하는 if 문으로 만드는데, 이 블록은 server 안·location 밖에 둬야 합니다.
  • nginx 도메인 정규화 — https 요청을 리다이렉트하려면 그 도메인의 SSL 인증서가 먼저 있어야 합니다. www 인증서 없이 www→non-www 규칙만 넣으면 방문자는 리다이렉트 전에 인증서 오류를 봅니다. 도메인 이전도 마찬가지로 옛 도메인 인증서를 계속 갱신해야 합니다.
  • Apache — .htaccess 는 재시작 없이 즉시 적용되지만, 안 먹으면 AllowOverride All 과 a2enmod rewrite 를 확인하세요. 규칙이 수백 개면 요청마다 파일을 읽으므로 가상호스트 설정으로 옮기는 편이 낫습니다.
  • Netlify — https 강제와 www 통일은 대시보드의 Domain management 에서 처리하는 것이 정석이라 _redirects 에 넣을 필요가 없습니다. 위에서부터 먼저 맞는 규칙 하나만 적용되며, 실제 파일보다 우선하려면 상태 코드 뒤에 ! 를 붙입니다.
  • 정규식 모드 — 규칙은 위에서부터 검사됩니다. /* 처럼 넓게 잡는 패턴을 위에 두면 아래 규칙이 영영 실행되지 않습니다. 좁은 규칙을 먼저 두세요.
"원래 주소의 쿼리스트링 유지" 옵션은 새 주소에 이미 쿼리가 있으면 ?a=1?b=2 같은 잘못된 주소를 만들 수 있습니다. 새 주소에 쿼리를 붙였다면 이 옵션은 끄고, 생성된 규칙을 눈으로 확인하세요.

자주 묻는 질문

301과 302 중 뭘 써야 하나요?

주소가 영영 바뀐 거라면 301입니다. 검색엔진이 새 주소로 색인을 옮기고 기존 평가를 넘겨 줍니다. 302는 이벤트 페이지처럼 곧 원래대로 돌아올 때만 쓰세요. 개편에 302를 쓰면 검색엔진이 옛 주소를 계속 붙들고 있습니다.

리다이렉트하면 검색 순위가 유지되나요?

301이면 대체로 유지됩니다. 다만 옛 페이지와 새 페이지의 내용이 대응해야 합니다. 모든 옛 주소를 새 홈으로 몰아 보내면 구글은 이를 소프트 404로 취급해 평가를 넘겨주지 않습니다. 1:1로 대응시키는 것이 원칙입니다.

nginx 규칙은 어디에 넣나요?

server 블록 안에 넣습니다. 이 도구는 정확한 매칭엔 location = 을, 패턴엔 rewrite ... permanent 를 씁니다. 적용 전 nginx -t 로 문법을 확인하고 systemctl reload nginx 로 무중단 반영하세요.

리다이렉트를 몇 단계까지 걸어도 되나요?

A→B→C처럼 이어지는 체인은 되도록 없애세요. 구글은 5단계 정도까지 따라가지만 그 과정에서 크롤링 예산이 낭비되고 속도도 느려집니다. 옛 규칙이 쌓였다면 최종 목적지로 직접 가도록 정리하는 편이 낫습니다.

입력한 주소 목록이 서버로 전송되나요?

아니요. 규칙 생성은 전부 브라우저에서 이뤄지며 주소 목록은 서버로 전송되지 않습니다.