Htaccess 리다이렉트 생성기

블로그를 이전하거나, URL 체계를 바꾸거나, 오래된 페이지를 통합할 때마다 Apache의 .htaccess가 정리의 부담을 떠안습니다. 이 생성기는 단순한 소스 → 대상 매핑을 알맞은 플래그가 있는 올바른 RewriteRule 지시문으로 바꿔, 사이트의 .htaccess 파일에 바로 넣을 수 있게 합니다.

리다이렉트 규칙을 생성하는 방법

  1. 1

    리다이렉트 유형 선택

    SEO 안전 이동에는 301 영구, A/B 테스트와 계절성 리다이렉트에는 302 임시.

  2. 2

    소스와 대상 입력

    정확한 경로 또는 정규식 패턴. 이전 경로가 RewriteRule 패턴이 되고, 새 URL이 리디렉트 대상이 됩니다.

  3. 3

    플래그 확인

    각 규칙에는 `[R=301,L]` 또는 `[R=302,L]` 플래그가 자동으로 붙어, mod_rewrite에서 바로 작동합니다.

  4. 4

    지시문 복사

    생성된 블록은 .htaccess의 `<IfModule mod_rewrite.c>` 섹션 안에 들어갑니다.

mod_rewrite vs mod_alias 지시문

Apache는 리다이렉트용 두 모듈을 제공합니다. 규칙의 복잡도에 따라 고르세요.

결정 가이드

요구사항 사용 예시
정확한 옛 URL → 정확한 새 URL Redirect Redirect 301 /old /new
와일드카드 접두사 RedirectMatch RedirectMatch 301 ^/blog/(.*)$ /articles/$1
쿼리 스트링 매치 RewriteRule 아래 참조
HTTPS 강제 RewriteRule RewriteCond %{HTTPS} off + 규칙
조건부(브라우저, 쿠키) RewriteRule RewriteCond와 함께

예시: www와 함께 HTTPS 강제

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

예시: /blog/post-123을 /articles/post-123으로 이동

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [L,R=301]

보게 될 플래그

  • L, 마지막, 더 이상 규칙을 처리하지 않음.
  • R=301 또는 R=302, 해당 상태 코드로 리다이렉트.
  • NC, 대소문자 구분 없음.
  • QSA, 원본 쿼리 스트링을 새 URL에 추가.
  • NE, 대상의 특수 문자를 다시 인코딩하지 않음.

흔한 실수

  • RewriteEngine On 잊기, 이것 없이는 어떤 RewriteRule도 효과가 없습니다.
  • 기본으로 302 쓰기, Google이 임시로 취급해 옛 URL이 계속 순위를 유지합니다.
  • 연쇄 리다이렉트(옛 → 중간 → 최종), 항상 단일 홉을 목표하세요. 추가 홉마다 링크 가치를 잃고 지연이 늘어납니다.

자주 묻는 질문

영구 이동에는 301: 사이트 이전, URL 슬러그 변경, HTTPS 업그레이드. 302는 유지보수 페이지 라우팅이나 A/B 분할 같은 임시 상황에만요. 검색 엔진은 301에서 순위 신호를 이전하며, 302에서는 신뢰성 있게 하지 않습니다.

가장 흔한 원인은 패턴에서 앞 슬래시를 잊는 것입니다. RewriteRule에서는 패턴이 앞 슬래시 없는 경로와 매치됩니다(예: ^blog/). Redirect(mod_alias)에서는 패턴이 슬래시로 시작합니다(/blog). 두 관례를 섞지 마세요.

네, RewriteRule 앞에 RewriteCond %{QUERY_STRING} ^id=123$를 쓰세요. 일반 Redirect는 쿼리 스트링을 읽지 않습니다. RewriteRule만 그것으로 매치할 수 있습니다.

네, 다음 요청부터요, Apache가 요청마다 .htaccess를 다시 읽습니다. 서버 재시작이 필요 없습니다. 아무 일도 안 일어나면 해당 디렉터리의 vhost에 AllowOverride All이 설정되었는지 확인하세요.

관련 도구

이 도구는 다른 언어로도 제공됩니다