고급 URL 재작성 (Advanced URL Rewriting with mod_rewrite)
Apache의 mod_rewrite 모듈은 강력한 URL 재작성 기능을 제공하여, 복잡한 URL을 더 간단하고 사용하기 쉽게 변환할 수 있습니다. 여기서는 mod_rewrite를 사용하여 URL을 재작성하는 규칙을 작성하는 방법과 관련된 내용을 설명하겠습니다.
소개 (Introduction)
mod_rewrite는 Apache 웹 서버의 모듈 중 하나로, URL을 동적으로 재작성할 수 있는 기능을 제공합니다. 이 모듈은 다양한 조건과 규칙을 사용하여 클라이언트가 요청한 URL을 다른 URL로 변환할 수 있습니다.
개념 (Concept)
URL 재작성은 클라이언트가 접근하는 URL을 내부적으로 다른 URL로 변환하는 과정을 의미합니다. 이를 통해 사용자는 더 간단한 URL을 사용할 수 있고, 서버 측에서는 실제로 처리할 URL을 사용할 수 있습니다.
원리 (Principle)
mod_rewrite는 정규 표현식을 사용하여 URL을 재작성합니다. 기본적인 흐름은 다음과 같습니다:
- 클라이언트가 특정 URL로 요청을 보냅니다.
- Apache는 요청된 URL을
mod_rewrite규칙에 따라 검사합니다. - 규칙에 맞는 경우, 해당 URL을 새로운 URL로 변환합니다.
- 변환된 URL을 처리하여 클라이언트에게 응답합니다.
함수들 (Functions)
mod_rewrite에서 자주 사용하는 디렉티브와 함수는 다음과 같습니다:
RewriteEngine On:mod_rewrite를 활성화합니다.RewriteRule: 재작성 규칙을 정의합니다.RewriteCond: 조건을 정의하여 조건이 맞을 때만RewriteRule을 적용합니다.
예제들 (Examples)
간단한 URL 재작성
사용자가 /old-page를 요청할 때, /new-page로 리디렉션합니다.
RewriteEngine On RewriteRule ^old-page$ /new-page [R=301,L]
동적 URL 재작성
/product/123와 같은 URL을 /product.php?id=123으로 변환합니다.
RewriteEngine On RewriteRule ^product/([0-9]+)$ /product.php?id=$1 [L]
조건부 URL 재작성
특정 호스트에서의 요청에 대해 재작성합니다. 예를 들어, 호스트가 example.com인 경우에만 재작성합니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^old-page$ /new-page [R=301,L]
SSL 강제 적용
HTTP 요청을 HTTPS로 강제 리디렉션합니다.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
사용법 (Usage)
- Apache 설정 파일 수정:
httpd.conf또는apache2.conf파일에서mod_rewrite모듈을 활성화합니다.
LoadModule rewrite_module modules/mod_rewrite.so
- 가상 호스트 설정: 가상 호스트 설정 파일에서
mod_rewrite규칙을 정의합니다.
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride All
</Directory>
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
</VirtualHost>
- .htaccess 파일 사용: 웹 루트 디렉토리에
.htaccess파일을 생성하여 규칙을 정의합니다.
RewriteEngine On RewriteRule ^old-page$ /new-page [R=301,L]
이와 같이 mod_rewrite를 사용하여 URL을 재작성함으로써, 사용자 경험을 개선하고, 검색 엔진 최적화(SEO)를 향상시킬 수 있습니다.
