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 파일 위치가 서로 맞는지 먼저 확인한다.