본문 바로가기
Apache Tomcat

Tomcat URL Rewrite 기능 (org.apache.catalina.valves.rewrite.RewriteValve)

aappsroot·2018년 1월 23일·조회 6,639

1. 개요

  • Tomcat이 제공하는 RewriteValve 기능을 사용해 요청 URL을 재작성하거나 리다이렉트한다.
  • Tomcat 8.0, 8.5 이상 계열에서 사용할 수 있다. Tomcat 7.0에서는 제공되지 않는다.
  • Apache HTTP Server의 mod_rewrite와 유사한 방식으로 규칙을 작성하지만, 모든 지시어가 동일하게 동작하는 것은 아니므로 운영 적용 전 테스트가 필요하다.

2. 방법

2-1. Valve 태그 적용

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
  • Host 하위에 적용하면 해당 가상 호스트 전체에 rewrite 규칙이 적용된다.
  • Context 하위에 적용하면 특정 웹 애플리케이션에만 rewrite 규칙이 적용된다.
  • 설정 위치는 환경에 따라 server.xml, context.xml 또는 개별 Context 설정 파일이 될 수 있다. 기존 운영 설정 구조에 맞춰 적용한다.

2-2. rewrite.config 파일 작성

  • 일반적인 rewrite rule 형식으로 규칙을 작성한다.
  • Host 하위에 Valve를 적용한 경우 위치 예: conf/Catalina/localhost/rewrite.config
  • Context 하위에 Valve를 적용한 경우 일반적으로 해당 애플리케이션의 WEB-INF/rewrite.config에 둔다.

2-3. 간단한 작성 예

RewriteRule ^/old-path$ /new-path [R=302,L]
  • 위 예시는 /old-path 요청을 /new-path로 임시 리다이렉트한다.
  • 운영 반영 전에 302로 먼저 검증한 뒤, 영구 리다이렉트가 확실한 경우에만 301 적용을 검토하는 것이 안전하다.

2-4. 테스트 방법

  • Tomcat을 재시작하거나 해당 Context를 다시 로드한 뒤 규칙이 적용되는지 확인한다.
  • 브라우저 개발자 도구 또는 curl -I로 응답 상태 코드와 Location 헤더를 확인한다.
  • 규칙이 적용되지 않으면 Valve 적용 위치와 rewrite.config 파일 위치가 서로 맞는지 먼저 확인한다.

관련 글

댓글 1

로그인 후 댓글을 남길 수 있습니다.

  • 혀뇽뇽이혀뇽뇽이· 2018년 1월 24일
    오호 Tomcat에도 이런 기능이 있었네요. 좀 더 디테일한 설명은 없나요?