.htaccess 리다이렉트

Apache 리다이렉트·HTTPS·www 규칙을 생성합니다.

생성한 코드를 사이트 루트의 .htaccess에 추가하세요. RewriteEngine은 한 번만 켜면 됩니다.

주소 구조를 정리하고 나면 예전 링크로 들어온 방문자가 404 화면을 보게 됩니다. 검색결과에 남아 있던 옛 주소도 마찬가지입니다.

이럴 때 필요한 것이 리다이렉트인데, 아파치의 .htaccess 문법은 조건과 플래그가 붙어 외우기 번거롭습니다. 이 도구는 자주 쓰는 다섯 가지 상황을 골라 그대로 붙여 넣을 수 있는 코드로 만들어 줍니다.

어떻게 계산되나요

유형별로 만들어지는 코드

유형사용하는 문법쓰는 때
특정 경로 → URL (301)Redirect 301페이지 주소가 영구히 바뀐 경우
특정 경로 → URL (302)Redirect 302점검·이벤트처럼 잠시 보낼 때
HTTP → HTTPS 강제RewriteCond %{HTTPS} off + RewriteRule보안 주소로 통일
non-www → www / www → non-www도메인 조건 + RewriteRule대표 주소를 하나로 통일

경로 유형을 고르면 기존 경로와 이동할 URL 입력칸이 나타나고, 나머지 유형은 도메인 전체에 적용되므로 입력칸이 사라집니다. 기존 경로는 /old-page 처럼 슬래시로 시작하는 사이트 내 경로로, 이동할 URL은 https부터 시작하는 전체 주소로 적는 것이 안전합니다.

붙여 넣는 위치와 순서

만들어진 코드는 사이트 루트의 .htaccess 파일에 추가합니다. 여러 규칙을 함께 쓸 때 RewriteEngine On 은 파일 전체에서 한 번만 있으면 됩니다. 규칙은 위에서부터 차례로 평가되므로, HTTPS·www 같은 주소 통일 규칙을 개별 페이지 규칙보다 위에 두면 동작을 예상하기 쉽습니다.

적용 전 확인할 것

  • 원본 파일을 반드시 복사해 둡니다. 문법이 하나만 틀려도 사이트 전체가 500 오류로 열리지 않습니다.
  • .htaccess 는 아파치 전용이며, 서버 설정에서 사용이 허용돼 있어야 동작합니다. Nginx는 방식이 다릅니다.
  • 301은 브라우저가 오래 기억하므로, 확신이 없을 때는 302로 먼저 확인한 뒤 바꾸는 편이 안전합니다.
  • 이동할 주소가 같은 규칙에 다시 걸리면 무한 반복에 빠집니다. 적용 후 실제로 열어 보고 확인하세요.

용어 정리

301 (영구 이동)
주소가 영구히 바뀌었다는 신호. 검색엔진이 새 주소로 평가를 옮겨 갑니다.
302 (임시 이동)
잠시만 다른 곳으로 보낸다는 신호. 원래 주소를 그대로 유지합니다.
RewriteEngine
아파치의 주소 재작성 기능을 켜는 지시어. 한 파일 안에서 한 번만 켜면 됩니다.
RewriteCond
바로 아래 RewriteRule을 적용할 조건. 접속이 HTTPS가 아닐 때만 동작시키는 식으로 씁니다.
HTTP_HOST
접속에 실제로 사용된 도메인 이름. www가 붙었는지 판단할 때 사용합니다.
.htaccess
아파치에서 폴더 단위 설정을 담는 파일. 점으로 시작해 숨김 파일로 취급되므로 FTP 설정에서 숨김 파일 보기를 켜야 보입니다.

자주 묻는 질문

301과 302 중 무엇을 써야 하나요?

주소가 완전히 바뀌어 앞으로도 되돌아가지 않는다면 301, 점검이나 이벤트처럼 잠시 보내는 상황이라면 302가 맞습니다. 301은 브라우저에 오래 저장되어 되돌리기 번거로우므로 확신이 없을 때는 302로 먼저 시험해 보세요.

적용했더니 사이트에 500 오류가 납니다

.htaccess에 문법 오류가 있으면 사이트 전체가 열리지 않습니다. 방금 추가한 부분을 지워 원래 상태로 되돌린 뒤, 규칙을 한 줄씩 다시 넣어 보며 문제가 되는 곳을 찾으면 됩니다. 수정 전 원본을 복사해 두면 복구가 훨씬 쉽습니다.

Nginx에서도 쓸 수 있나요?

쓸 수 없습니다. .htaccess는 아파치 전용이며 Nginx는 서버 설정 파일에 return 301이나 rewrite 규칙을 직접 적습니다. 호스팅이 어떤 웹서버를 쓰는지 먼저 확인하세요.

페이지가 계속 새로고침되며 멈추지 않아요

리다이렉트가 서로를 가리켜 무한 반복에 빠진 경우입니다. 이동할 주소가 같은 규칙에 다시 걸리지 않는지 확인하고, 서버 앞단의 로드밸런서나 CDN에서 이미 HTTPS 전환을 하고 있지는 않은지도 살펴보세요.

규칙을 여러 개 넣어도 되나요?

가능합니다. 다만 RewriteEngine On은 파일에 한 번만 두고, 규칙은 위에서부터 차례로 평가된다는 점을 기억하세요. 도메인·프로토콜을 통일하는 규칙을 개별 페이지 이동 규칙보다 위에 두는 편이 예상대로 동작합니다.