워드프레스의 기본 홈 화면 대신 특정 페이지를 먼저 보여주려면 테마의 functions.php가 아니라 웹 서버의 .htaccess에 리디렉션 규칙을 추가할 수 있다. 이 방식은 방문자가 도메인의 루트 주소를 요청했을 때만 작동하도록 조건을 제한하는 것이 핵심이다.
.htaccess는 Apache 웹 서버가 디렉터리 단위의 설정을 적용하는 파일이다. 워드프레스도 고유주소 처리를 위해 이 파일을 사용하므로, 기존 규칙을 지우거나 순서를 무작정 바꾸지 않아야 한다. 워드프레스 공식 문서도 .htaccess의 워드프레스 관리 영역과 사용자 규칙을 구분해 설명한다.
루트 주소만 특정 페이지로 보내기
다음 규칙은 사이트의 루트 주소인 /에 접속한 경우에만 지정한 페이지로 이동시킨다. /category/, /post-name/, /wp-admin/처럼 다른 경로에는 적용되지 않는다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ /페이지-주소/ [R=301,L]
</IfModule>
페이지-주소 부분에는 실제로 보여주려는 워드프레스 페이지의 경로를 입력한다. 예를 들어 페이지 주소가 https://example.com/company/라면 규칙에는 도메인을 제외한 /company/를 넣는다. 사이트의 도메인까지 포함한 전체 주소를 사용해야 하는 상황도 있지만, 같은 사이트 안의 페이지로 이동하는 목적이라면 경로만 지정하는 방식이 관리하기 쉽다.
RewriteCond %{REQUEST_URI} ^/$는 요청 경로가 루트인지 확인하는 조건이다. 그 다음의 RewriteRule ^$는 .htaccess가 사이트 루트 디렉터리에 있을 때 해당 디렉터리 자체에 들어온 요청을 대상으로 삼는다. Apache의 mod_rewrite는 조건이 맞을 때만 뒤따르는 규칙을 실행하며, [L]은 해당 규칙을 처리한 뒤 같은 규칙 묶음의 추가 처리를 멈추게 한다. Apache 공식 문서에 각 지시어와 조건 처리 방식이 정리되어 있다.
301 리디렉션을 바로 쓰기 전 확인할 점
예시의 [R=301,L]에서 R=301은 영구 리디렉션을 뜻한다. 검색 엔진과 브라우저가 기존 홈 주소의 목적지가 바뀐 것으로 처리할 수 있고, 브라우저가 결과를 오래 기억해 수정한 규칙이 즉시 반영되지 않을 때도 있다. 따라서 처음 설정할 때는 잠시 [R=302,L]로 저장해 동작을 확인한 뒤, 목적지가 확정되었을 때 301로 바꾸는 편이 안전하다.
테스트용 규칙은 다음처럼 바꿀 수 있다.
RewriteRule ^$ /페이지-주소/ [R=302,L]
루트 주소를 열었을 때 원하는 페이지가 표시되고, 기존 글이나 관리자 화면까지 함께 다른 곳으로 이동하지 않는지 확인한다. 문제가 없다면 302를 301로 변경한다. Apache 문서도 R=301을 영구 리디렉션으로 설명하며, 리디렉션 상태 코드는 신중하게 선택해야 한다. Apache의 리디렉션 안내에서도 같은 원칙을 확인할 수 있다.
Rank Math에서 .htaccess 편집하기
서버 파일에 직접 접속하지 않고 Rank Math를 사용한다면 워드프레스 관리자 화면에서 Rank Math SEO의 일반 설정으로 이동한 뒤 Edit .htaccess 메뉴를 연다. 한국어 번역이나 플러그인 버전에 따라 메뉴 이름이 조금 다르게 표시될 수 있으며, 해당 항목이 보이지 않으면 Rank Math의 고급 모드를 활성화해야 할 수 있다.
편집 화면에는 .htaccess 전체 내용이 표시된다. 기존 내용을 모두 삭제하고 새 코드만 넣는 방식은 피해야 한다. 워드프레스 고유주소에 필요한 규칙, 캐시 플러그인이 관리하는 규칙, 보안 플러그인이 추가한 설정이 함께 들어 있을 수 있기 때문이다.
Rank Math는 .htaccess를 저장하기 전에 백업을 만들 수 있고, 편집 화면에도 파일 수정으로 사이트에 문제가 생길 수 있다는 경고를 표시한다. 저장하기 전에는 현재 파일을 별도로 내려받아 두고, 복사본의 이름을 알아보기 쉬운 형태로 보관하는 것이 좋다. Rank Math 공식 안내도 편집 전 백업과 오류 발생 시 백업 파일 복원을 권장한다.
자동 생성 구문과 겹치지 않게 넣기
사용자 정의 리디렉션은 # BEGIN WordPress와 # END WordPress 사이에 넣지 않는 것이 안전하다. 워드프레스가 고유주소 설정을 저장하는 과정에서 해당 구간을 다시 작성할 수 있기 때문이다. 사용자 규칙은 워드프레스 관리 영역 바깥에 별도의 블록으로 둔다.
캐시 플러그인이 만든 # BEGIN WP Rocket 같은 관리 구간이 있다면 그 안쪽도 피해야 한다. 자동 생성 영역의 시작과 끝을 확인한 다음, 해당 영역이 끝난 뒤이면서 # BEGIN WordPress가 시작되기 전인 위치에 추가하는 방법을 우선 검토할 수 있다. 파일마다 구성이 다르므로 기존 규칙을 먼저 읽고, 같은 목적의 리디렉션이 이미 있는지도 확인해야 한다.
.htaccess에 오탈자나 잘못된 문법이 들어가면 사이트 전체가 500 오류를 반환하거나 리디렉션이 반복될 수 있다. 저장 직후 관리자 화면과 홈 주소가 모두 열리는지 확인하고, 다른 페이지와 로그인 주소도 직접 테스트한다. 문제가 생기면 새로 넣은 블록을 제거하거나 저장해 둔 원본 백업으로 복원한다.
이 방법은 Apache와 mod_rewrite가 활성화된 환경을 전제로 한다. 서버가 다른 방식으로 동작하거나 호스팅 업체가 .htaccess 사용을 제한한다면 코드가 실행되지 않을 수 있다. 워드프레스 멀티사이트처럼 설치 구조가 다른 경우에도 기본 사이트와 동일한 규칙을 그대로 적용하지 말고 현재 .htaccess 구성을 먼저 확인해야 한다.
자주 묻는 질문 FAQ
Q1) 모든 글과 페이지가 지정한 페이지로 이동하는가?
그렇지 않다. RewriteCond %{REQUEST_URI} ^/$ 조건이 루트 요청만 대상으로 삼기 때문에 일반적인 글 주소와 페이지 주소는 그대로 열린다. 다만 다른 플러그인이나 서버 설정에 별도의 전체 리디렉션 규칙이 있다면 결과가 달라질 수 있으므로 중복 규칙을 함께 확인해야 한다.
Q2) functions.php에 코드를 넣어도 되는가?
PHP에서 리디렉션을 처리하는 방법도 있지만, 이번 방식은 서버 단계에서 .htaccess가 요청을 처리하도록 구성한 것이다. 따라서 테마를 바꾸어도 유지되는 서버 설정이 필요할 때 사용한다. 반대로 Apache가 아닌 환경에서는 이 .htaccess 규칙이 적용되지 않을 수 있다.
Q3) 저장한 뒤에도 홈 화면이 바뀌지 않으면 어떻게 하는가?
먼저 주소에 입력한 페이지 경로와 마지막 슬래시를 확인하고, 캐시 플러그인과 서버 캐시를 비운 뒤 새 브라우저 창에서 테스트한다. 301 결과가 브라우저에 남아 있을 수 있으므로 처음 검증할 때는 302를 사용하는 편이 좋다. 그래도 해결되지 않으면 서버가 Apache인지, mod_rewrite가 활성화되어 있는지, 다른 리디렉션 규칙과 충돌하지 않는지 점검해야 한다.