[WAS] RewriteRule 설정

김봉남·2024년 1월 22일

WAS

목록 보기
1/23
post-thumbnail

RewriteRule

  • 웹 서버의 리디렉션 및 URL 리라이팅을 수행하는 데 사용
  • mod_rewrite 모듈에서 사용
  • URL 구조를 변경하거나 요청을 다른 위치로 리다이렉션하는 등의 작업을 수행

기본적인 리다이렉션

RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]

    RewriteEngine On
    RewriteRule ^/atest /index2.jsp [L,R]
  • 이 규칙은 /old-page로 들어오는 요청을 /new-page로 리다이렉션하며, HTTP 상태 코드 301(영구적 이동)을 반환
  • [R] 플래그는 리다이렉션을 나타내며, 클라이언트 브라우저에게 새로운 URL로 이동하라는 지시를 제공합니다.
    [R=301]에서 301은 HTTP 상태 코드로, 301은 "Moved Permanently"를 나타냅니다. 이는 요청된 자원이 영구적으로 다른 위치로 이동했음을 의미
  • [L] 플래그는 "Last"를 나타내며, 현재 규칙을 만족하면 더 이상의 규칙 처리를 중단합니다. 다시 말하면, 현재 규칙과 일치하는 경우 뒤의 다른 규칙들을 무시하고 처리를 중지

Query String 제거

RewriteEngine On
RewriteRule ^page-with-query$ /page-without-query? [R=301,L]

  • 이 규칙은 /page-with-query로 들어오는 요청의 쿼리 문자열을 제거하고, /page-without-query로 리다이렉션

RewriteCond 사용

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance$
RewriteRule ^.*$ /maintenance [R=503,L]

  • 이 규칙은 모든 요청이 /maintenance 페이지로 리다이렉션되지 않도록, /maintenance 페이지에 대한 요청은 제외

작업 순서

http://ABC.co.kr/Qrcode?equipcode=5AB010001 주소를
http://ABC.co.kr/ABC/ABC.do?I_MATNO=&I_INDMATNO=5AB010001 주소로 연결
→ URL 뒷자리 “5AB010001” 부분은 계속 바뀜.

    RewriteEngine On
    RewriteCond %{QUERY_STRING} equipcode=(.*)               ##  equipcode 코드는 URL에 equipcode뒤에 숫자 붙이는 뜻
    RewriteRule ^/Qrcode /ABC/ABC.do?I_MATNO=&I_INDMATNO=%1 [L,R]
   
    # https 리다이렉션 설정
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]

http -> https rewrite

설정 구성 요소 설명

  • RewriteEngine On:

    RewriteEngine On 지시어는 Apache의 mod_rewrite 모듈을 활성화합니다. 이 모듈은 URL 재작성 기능을 제공합니다.

  • RewriteCond %{HTTPS} off:

    RewriteCond는 재작성 규칙을 적용할 조건을 정의합니다.
    %{HTTPS}는 현재 요청이 HTTPS를 사용하는지 여부를 나타냅니다.
    off는 요청이 HTTP로 이루어지고 있음을 의미합니다. 따라서, 이 조건은 HTTP 요청에 대해서만 참이 됩니다.

  • RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]:

    RewriteRule은 실제로 URL 재작성을 수행하는 규칙을 정의합니다.
    ^(.)$: ^는 URL의 시작을 의미합니다.
    (.
    )는 모든 문자를 의미하며, 캡처 그룹으로 설정되어 URL의 나머지 부분을 캡처합니다.
    $는 URL의 끝을 의미합니다.

  • https://%{HTTP_HOST}$1:

    https://는 HTTPS 프로토콜을 의미합니다.
    %{HTTP_HOST}는 현재 요청의 호스트 이름(도메인)을 나타냅니다.
    $1는 캡처 그룹 (.*)에 해당하는 URL의 나머지 부분을 참조합니다.

  • [R,L]:

R은 리디렉션을 의미합니다. 기본적으로 302(임시) 리디렉션을 수행합니다.
L은 마지막(last) 규칙을 의미합니다. 이 규칙이 적용되면, 더 이상 다른 재작성 규칙을 적용하지 않습니다.

동작 방식

이 설정은 HTTP로 들어오는 모든 요청을 자동으로 HTTPS로 리디렉션합니다. 예를 들어:

사용자가 http://example.com/page에 접속하면:
RewriteEngine On으로 mod_rewrite가 활성화됩니다.
RewriteCond %{HTTPS} off 조건이 참이 되어, HTTP 요청이 감지됩니다.
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L] 규칙이 적용되어, http://example.com/page가 https://example.com/page로 리디렉션됩니다.

설정

http -> https rewrite 설정

    RewriteEngine On 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]
profile
남자다

0개의 댓글