Apache2 URL Rewriting


고급 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을 재작성합니다. 기본적인 흐름은 다음과 같습니다:

  1. 클라이언트가 특정 URL로 요청을 보냅니다.
  2. Apache는 요청된 URL을 mod_rewrite 규칙에 따라 검사합니다.
  3. 규칙에 맞는 경우, 해당 URL을 새로운 URL로 변환합니다.
  4. 변환된 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)

  1. Apache 설정 파일 수정: httpd.conf 또는 apache2.conf 파일에서 mod_rewrite 모듈을 활성화합니다.
LoadModule rewrite_module modules/mod_rewrite.so
  1. 가상 호스트 설정: 가상 호스트 설정 파일에서 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>
  1. .htaccess 파일 사용: 웹 루트 디렉토리에 .htaccess 파일을 생성하여 규칙을 정의합니다.
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]

이와 같이 mod_rewrite를 사용하여 URL을 재작성함으로써, 사용자 경험을 개선하고, 검색 엔진 최적화(SEO)를 향상시킬 수 있습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *