.htaccess로 301 리디렉션을 관리할 때 생기는 이전 리스크
.htaccess는 몇 개의 301에는 충분해 보이지만, 도메인 이전 단계로 가면 chain, 거친 wildcard, UTM 손실, 검토 불가능한 규칙이 한꺼번에 문제로 드러납니다.

.htaccess 301 redirect를 찾는 순간의 문제는 대개 아주 구체적입니다.
- 예전 URL을 새 URL로 보내야 한다
- HTTP를 HTTPS로 넘겨야 한다
- 오래된 도메인을 영구적으로 옮겨야 한다
몇 개 안 되는 규칙이라면 .htaccess로도 충분할 수 있습니다. 문제는 그 방식이 도메인 이전 전체까지 확장될 때부터 시작됩니다.
실무적인 결론은 보통 이렇습니다.
- 소수의 안정적인 301이라면
.htaccess가 아직 버틸 수 있다 - 도메인 이전, 리브랜딩, 대규모 URL 이전으로 가면
.htaccess는 운영 리스크의 축이 되기 쉽다
전체 이전 관점은 사이트 이전 리디렉션 체크리스트도 함께 보세요. 이 글은 .htaccess와 301에만 집중합니다.
가장 기본적인 형태
한 URL의 영구 이동은 보통 이렇게 씁니다.
Redirect 301 /old-page https://www.example.co.kr/new-page도메인 전체를 path까지 유지하며 옮길 때는 mod_rewrite가 많이 쓰입니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.co\.kr$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.co\.kr$
RewriteRule ^(.*)$ https://www.new-domain.co.kr/$1 [R=301,L]하지만 이건 문법만 설명합니다. 실제 질문은 다릅니다.
[!TIP] 아직 몇 개의 redirect만 관리하고 있는가, 아니면 validation, ownership, rollback이 필요한 migration workflow를 이미 운영하고 있는가?
.htaccess가 아직 괜찮은 경우
보통 다음 조건이면 버틸 수 있습니다.
- 규칙 수가 적다
- Apache가 유일한 redirect layer다
- CDN, proxy, middleware가 따로 rewriting하지 않는다
- path logic이 단순하다
- ownership이 명확하다
어디서부터 망가지기 쉬운가
1. redirect layer가 여러 개다
실제 프로젝트에서는 규칙이 다음 여러 곳에 흩어집니다.
.htaccess- CMS plugin
- Nginx / LB
- Cloudflare
- app middleware
그러면 이전은 이렇게 됩니다.
http://old-domain.co.kr/product-a
-> https://old-domain.co.kr/product-a
-> https://www.old-domain.co.kr/product-a
-> https://www.new-domain.co.kr/shop/product-a열리긴 하지만, 좋은 이전 구조는 아닙니다.
2. path와 query가 흐려진다
홈페이지만 테스트하고, 깊은 URL이나 UTM이 기대한 대로 유지되지 않은 채 공개되는 경우가 흔합니다.
3. wildcard만으로는 부족해진다
/blog/* -> /articles/*는 보기엔 깔끔하지만,
- 카테고리 통합
- 상품 종료
- 예외 페이지
가 생기면 곧 부족해집니다.
필요한 것은:
- 명시적 매핑
- 우선순위
- 검증
- 리뷰 가능한 redirect map
4. 변경을 감사하기 어렵다
설정 파일 merge는 이전 audit trail이 아닙니다.
팀이 알고 싶은 것은:
- 누가 무엇을 바꿨는지
- 어떤 규칙이 새로 생겼는지
- 어떤 규칙이 사라졌는지
- 충돌은 없는지
- rollback은 어떻게 하는지
.htaccess만으로는 이 부분이 약합니다.
자주 생기는 실수
host, HTTPS, 최종 목적지가 여러 hop으로 나뉜다
나쁜 예:
http://old-domain.co.kr/docs/api
-> https://old-domain.co.kr/docs/api
-> https://www.old-domain.co.kr/docs/api
-> https://www.new-domain.co.kr/docs/api
좋은 예:
http://old-domain.co.kr/docs/api
-> https://www.new-domain.co.kr/docs/api홈만 보고 중요한 URL을 놓친다
홈은 멀쩡하지만 제품, 문서, 블로그, 기존 자연 유입 URL은 깨지는 식입니다.
파라미터를 잃는다
이메일, QR, paid social, 파트너 링크에 의존한다면 utm_ 손실은 곧 SEO와 리포팅 문제로 이어집니다.
redirect map이 라이브 계층 밖에 있다
실제 이전 설계는 시트에 있고, 라이브 규칙은 서버 파일에 있으면 사각지대가 커집니다.
언제 워크플로를 바꿔야 하나
다음 조건이면 바꾸는 쪽이 낫습니다.
- 수백~수천 URL 이전
- 여러 팀/에이전시가 함께 수정
- CSV import 필요
- 공개 전 충돌 검증 필요
- rollback 명확성 필요
- origin 설정 변경을 줄이고 싶음
그 지점에서 UrlEdge가 의미를 가집니다.
정리
핵심 질문은 .htaccess가 좋으냐 나쁘냐가 아닙니다.
지금 다루는 일이 몇 줄짜리 서버 규칙인지, 아니면 SEO·캠페인·여러 팀이 얽힌 routing 프로젝트인지 가 진짜 질문입니다.
후자라면 필요한 것은 snippet이 아니라 운영 가능한 시스템입니다.
관련 글
전체 보기
Firebase 이후 Universal Links와 App Links 설정 방법
Firebase Dynamic Links 종료 이후 Universal Links, Android App Links, 앱 스토어 fallback, 브랜드 링크를 어떻게 다시 구성할지 실무 기준으로 정리합니다.

WhatsApp, Instagram, QR용 측정 링크 설계
WhatsApp, Instagram, QR 유입에 쓰는 측정 링크를 UTM을 잃지 않고, URL을 지저분하게 만들지 않으면서, 운영 가능하게 설계하는 방법을 정리합니다.