Apache mod_rewrite를 사용한 도메인 포워딩 설정하기
Apache의 mod_rewrite
모듈을 사용하여 도메인 포워딩(리디렉션)을 설정하는 방법에 대해 상세히 설명드리겠습니다. 도메인 포워딩은 사용자가 특정 도메인으로 접근할 때 다른 도메인으로 자동으로 이동시키는 기능입니다. 예를 들어, www.old-domain.com
에 접속하면 자동으로 www.new-domain.com
으로 리디렉션되도록 설정할 수 있습니다.
mod_rewrite란?
mod_rewrite 는 Apache 웹 서버의 확장 모듈로, URL을 동적으로 변경할 수 있게 해줍니다. 이를 통해 복잡한 리디렉션 규칙을 정의하고 URL 구조를 개선할 수 있습니다.
아래는 mod_rewrite
를 이용한 도메인 포워딩 설정 방법을 단계별로 설명한 내용입니다.
1. mod_rewrite
모듈 활성화
먼저, Apache의 mod_rewrite
모듈이 활성화되어 있는지 확인해야 합니다. 활성화되지 않은 경우 활성화하는 방법은 다음과 같습니다.
Ubuntu/Debian 계열
sudo a2enmod rewrite
sudo systemctl restart apache2
CentOS/RHEL 계열
보통 기본적으로 활성화되어 있지만, 활성화되지 않은 경우 httpd.conf
파일을 수정해야 합니다.
# httpd.conf 파일 열기
sudo vi /etc/httpd/conf/httpd.conf
# LoadModule 줄 확인 및 주석 해제
LoadModule rewrite_module modules/mod_rewrite.so
# 파일 저장 후 Apache 재시작
sudo systemctl restart httpd
2. Apache 설정 파일 수정
도메인 포워딩은 주로 Virtual Host 설정 또는 .htaccess
파일을 통해 설정할 수 있습니다. 여기서는 두 가지 방법을 모두 설명하겠습니다.
방법 1: Virtual Host 설정을 통한 도메인 포워딩
예제 시나리오
- 기존 도메인:
www.old-domain.com
- 포워딩 대상 도메인:
www.new-domain.com
설정 단계
-
Virtual Host 설정 파일 열기
일반적으로 설정 파일은
/etc/apache2/sites-available/
(Ubuntu/Debian) 또는/etc/httpd/conf.d/
(CentOS/RHEL)에 위치합니다. 예를 들어,old-domain.conf
파일을 생성하거나 수정합니다.sudo vi /etc/apache2/sites-available/old-domain.conf
-
Virtual Host 설정 추가
<VirtualHost *:80> ServerName www.old-domain.com ServerAlias old-domain.com RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC] RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L] </VirtualHost>
설명:
RewriteEngine On
:mod_rewrite
엔진을 활성화합니다.RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
: 요청된 호스트가old-domain.com
또는www.old-domain.com
일 경우에만 다음RewriteRule
을 적용합니다.[NC]
는 대소문자 구분 없이 매칭함을 의미합니다.RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]
: 모든 요청 경로를http://www.new-domain.com/
으로 리디렉션합니다.[R=301,L]
은 301 영구 리디렉션을 의미하며, 마지막 규칙임을 나타냅니다.
-
사이트 활성화 및 Apache 재시작
Ubuntu/Debian의 경우:
sudo a2ensite old-domain.conf sudo systemctl reload apache2
CentOS/RHEL의 경우 설정 파일이
conf.d
에 위치하므로 별도의 활성화 명령이 필요 없으며, 바로 재시작합니다.sudo systemctl restart httpd
방법 2: .htaccess
파일을 통한 도메인 포워딩
.htaccess
파일은 디렉토리별로 Apache 설정을 덮어쓸 수 있는 파일입니다. 특정 디렉토리에 .htaccess
파일을 생성하거나 수정하여 리디렉션을 설정할 수 있습니다.
설정 단계
-
.htaccess 파일 위치
리디렉션을 적용할 도메인의 루트 디렉토리에
.htaccess
파일을 생성하거나 수정합니다. 예를 들어,/var/www/html/
에 위치할 수 있습니다. -
.htaccess 파일 수정
sudo vi /var/www/html/.htaccess
파일에 다음 내용을 추가합니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]
설명: 이전의 Virtual Host 설정과 동일한 의미를 가집니다.
-
Apache 설정 파일에서
.htaccess
사용 허용.htaccess
파일을 사용하기 위해서는 Apache 설정 파일에서AllowOverride
지시어가 적절히 설정되어 있어야 합니다. 예를 들어,/etc/apache2/sites-available/000-default.conf
파일을 열고<Directory>
섹션을 수정합니다.<Directory /var/www/html/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
주의:
AllowOverride All
은 보안상 취약점을 유발할 수 있으므로, 필요한 경우에만 사용하고 가능한 최소한의 권한을 부여하는 것이 좋습니다. -
Apache 재시작
설정을 적용하기 위해 Apache를 재시작합니다.
sudo systemctl restart apache2
3. 리디렉션 테스트
설정을 완료한 후, 웹 브라우저를 열고 www.old-domain.com
또는 old-domain.com
으로 접속하여 www.new-domain.com
으로 제대로 리디렉션되는지 확인합니다. 또한, 경로와 쿼리 스트링이 올바르게 전달되는지 테스트합니다.
예를 들어:
http://www.old-domain.com/about
→http://www.new-domain.com/about
http://old-domain.com/contact?ref=homepage
→http://www.new-domain.com/contact?ref=homepage
4. 추가 고려사항
1. HTTPS 리디렉션
만약 새 도메인이 HTTPS를 사용하고 있다면, 리디렉션 URL을 https
로 설정해야 합니다.
RewriteRule ^(.*)$ https://www.new-domain.com/$1 [R=301,L]
2. www와 non-www 리디렉션 통일
도메인 리디렉션 시 www
사용 여부를 통일하여 SEO에 유리하도록 설정할 수 있습니다. 예를 들어, 모든 요청을 www
가 포함된 도메인으로 리디렉션하려면 다음과 같이 설정합니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.old-domain.com/$1 [R=301,L]
그 후, www.old-domain.com
에서 www.new-domain.com
으로 리디렉션하는 규칙을 추가합니다.
3. 301 vs 302 리디렉션
- 301 (영구 리디렉션): 검색 엔진에 영구적인 이동을 알리며, SEO에 영향을 줍니다.
- 302 (임시 리디렉션): 일시적인 이동을 알리며, SEO에 큰 영향을 주지 않습니다.
일반적으로 도메인 포워딩은 영구적인 이동이므로 301
을 사용하는 것이 적합합니다.
4. SEO 고려사항
도메인 리디렉션 시 검색 엔진이 새로운 도메인으로 인덱싱을 잘 반영할 수 있도록 설정해야 합니다. 301
리디렉션을 사용하면 검색 엔진이 기존 도메인의 SEO 가치를 새로운 도메인으로 이전할 수 있습니다.
5. 캐시 문제
브라우저가 301
리디렉션을 캐시할 수 있으므로, 설정을 변경할 때는 브라우저 캐시를 지우거나 다른 브라우저를 사용하여 테스트하는 것이 좋습니다.
5. 예제 전체 설정
아래는 Ubuntu/Debian 계열에서 Virtual Host
설정을 통해 도메인 포워딩을 설정하는 전체 예제입니다.
1) Virtual Host 설정 파일 생성
sudo vi /etc/apache2/sites-available/old-domain.conf
2) 설정 내용 추가
<VirtualHost *:80>
ServerName www.old-domain.com
ServerAlias old-domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://www.new-domain.com/$1 [R=301,L]
</VirtualHost>
3) 사이트 활성화 및 Apache 재시작
sudo a2ensite old-domain.conf
sudo systemctl reload apache2
이제 http://www.old-domain.com
또는 http://old-domain.com
으로 접속하면 자동으로 https://www.new-domain.com
으로 리디렉션됩니다.
결론
Apache의 mod_rewrite
모듈을 사용하여 도메인 포워딩을 설정하는 방법을 살펴보았습니다. Virtual Host
설정을 통해 보다 중앙집중적으로 관리할 수 있으며, .htaccess
파일을 사용하면 디렉토리별로 유연하게 설정할 수 있습니다. 상황에 맞게 적절한 방법을 선택하여 도메인 리디렉션을 설정하시기 바랍니다.
추가적으로, mod_rewrite
외에도 Redirect
지시어를 사용하는 방법이 있지만, mod_rewrite
는 보다 유연하고 강력한 기능을 제공하므로 복잡한 리디렉션 규칙을 설정할 때 유용합니다.
도움이 되셨기를 바랍니다!
댓글남기기