Contents
see List작성일 2020. 12. 12.
Tomcat URL Rewrite 설정 가이드
Tomcat에서 www 붙이기/지우기, HTTP에서 HTTPS 리다이렉트, 301/302 응답 설정 방법입니다. UrlRewriteFilter를 사용합니다.
1. 의존성 추가
<!-- pom.xml -->
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.4</version>
</dependency>
2. 필터 등록 (web.xml)
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. urlrewrite.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<urlrewrite>
<!-- www 붙이기 (301 영구 리다이렉트) -->
<rule>
<name>Add www</name>
<condition name="host" operator="notequal">^www.</condition>
<condition name="host">(.+)</condition>
<from>^(.*)$</from>
<to type="permanent-redirect">https://www.%1$1</to>
</rule>
<!-- www 지우기 (301 영구 리다이렉트) -->
<rule>
<name>Remove www</name>
<condition name="host">^www.(.+)</condition>
<from>^(.*)$</from>
<to type="permanent-redirect">https://%1$1</to>
</rule>
</urlrewrite>
4. HTTP → HTTPS 리다이렉트
<rule>
<name>Force HTTPS</name>
<condition name="scheme" operator="notequal">https</condition>
<from>^(.*)$</from>
<to type="permanent-redirect">https://%{server-name}$1</to>
</rule>
5. 301 vs 302 리다이렉트
| 구분 | 301 | 302 |
|---|---|---|
| 의미 | 영구 이동 | 임시 이동 |
| SEO | 권장 (링크 점수 전달) | 비권장 |
| 캐싱 | 브라우저가 캐시 | 매번 요청 |
| 설정 | type="permanent-redirect" | type="temporary-redirect" |
6. 경로 변경 규칙
<!-- 이전 URL을 새 URL로 -->
<rule>
<from>^/old-page$</from>
<to type="permanent-redirect">/new-page</to>
</rule>
<!-- 동적 경로 매핑 -->
<rule>
<from>^/blog/([0-9]+)$</from>
<to>/post.jsp?id=$1</to>
</rule>
<!-- 확장자 제거 -->
<rule>
<from>^/page/(.+)$</from>
<to>/$1.jsp</to>
</rule>
7. 조건 활용
<!-- 특정 IP만 접근 허용 -->
<rule>
<condition name="remote-addr" operator="notequal">192.168.1..+</condition>
<from>^/admin/.*$</from>
<to type="temporary-redirect">/403.html</to>
</rule>
<!-- 모바일 리다이렉트 -->
<rule>
<condition name="user-agent">.*(iPhone|Android).*</condition>
<from>^(.*)$</from>
<to type="temporary-redirect">https://m.example.com$1</to>
</rule>
주의사항
- 규칙 순서 중요 - 위에서 아래로 매칭
- 무한 루프 주의 - 조건 정확히 설정
- 프록시 환경에서는 X-Forwarded-Proto 헤더 확인
tool
| No | 작성일 | Title |
|---|---|---|
| 3006 | 2026. 06. 12. | Playwright 트레이스로 CI 테스트 실패를 빠르게 재현하는 운영 가이드 |
| 2950 | 2026. 06. 04. | GitHub Actions 배포 중복과 장기 토큰을 줄이는 OIDC 워크플로 설계 |
| 2894 | 2026. 05. 27. | Docker BuildKit 캐시 마운트와 원격 캐시로 CI 빌드 시간 줄이기 |
| 2835 | 2026. 05. 19. | Playwright Trace Viewer로 CI 실패 증거 남기기: 재현 안 되는 E2E 장애 추적 가이드 |
| 2635 | 2026. 04. 28. | Biome v2 완전 가이드: ESLint + Prettier를 대체하는 Rust 기반 통합 툴체인 — 56배 빠른 린트, 타입 인식 검사, 단일 설정 파일 |
| 2557 | 2026. 04. 20. | uv로 Python 개발 환경 100배 빠르게: pip 완전 대체 실전 가이드 |
| 2495 | 2026. 04. 14. | 2026 개발자 필수 AI 코딩 도구 완벽 비교: Claude Code vs Cursor vs GitHub Copilot |
| 2474 | 2026. 04. 13. | 2026 개발자 필수 도구 완벽 가이드: Claude Code, Cursor, Zed, AI DevOps 툴 |
| 2454 | 2026. 04. 12. | 2026 AI 개발 도구 완전 비교: GitHub Copilot vs Cursor vs Claude Code |
| 2430 | 2026. 04. 11. | Claude Code Agent SDK로 커스텀 AI 에이전트 만들기 |