티스토리 뷰

카테고리 없음

UrlRewrite Manual 요약

사랑과사람 2009. 2. 26. 02:34

UrlRewirteFilter 2.6 매뉴얼

 

설치

1. 다운로드 받은 파일을 컨텍스트 디렉토리에 풀면 WEB-INF 디렉토리에 urlrewirte.xml이 들어있다.

2. WEB-INF/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. WEB-INF/urlrewrite.xml을 생성함으로 설정을 추가한다.

4. 컨텍스트를 재실행한다.

 

필터 파라미터

 

기본 사항외에 기타 리로딩 설정에 관련된 추가 사항들이 있다. 자가 설명을 참조하길 바란다.

 

WEB-INF/urlrewrite.xml 설정

 

설정사항은 WEB-INF폴더에 존재하는 간단한 XML파일을 통하여 이루어진다. 이 XML파일은 urlrewrite.xml이라고 명명한다. 예제를 참조하여 기재하며, 기본 설정을 다음과 같다.

<?xml version="1.0" encoding="utf-8"?>

 

<!DOCTYPE urlrewrite

PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"

"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">

 

<urlrewrite>

 

<rule>

<from>^/some/olddir/(.*)$</from>

<to type="redirect">/very/newdir/$1</to>

</rule>

 

</urlrewrite>

urlrewirte.xml 파일은 'urlrewrite'로 불리는 루트 요소를 포함하여야 하고 최소 하나의 ‘룰’요소를 포함하여야 한다.

 

하나의 ‘룰’은 ‘from'과 ’to'를 포함하고, ‘condition'요소나 and/or 같은 ’set‘요소를 가질 수 있다.

 

'룰‘은 입력 요청에 처리시, 모든 ’condition' 요소를 만나게 되며, 'from'은 요청 URL과 ‘to'로 ’from' 패턴에 적용되어 생성되는 최종 URL에 적용된다. 그렇게해서 룰은 'set'으로 매칭되어 실행된다.

 

초기 적용시 주의사항

· 룰에 ‘&'를 입력하기 원하면 '&amp;'를 XML에 입력하여야 한다.

· 가장 간단하게 실행시키기 위해서 모든 from에 ^과 끝으로 $를 사용한다.

Tip) 일반적으로 문자열의 시작으로 ^를 기입하며 $를 끝으로 기입한다.

/my/url/path를 요청하는 것이 <from>^url/$</from>과 맞지 않지만 <from>/url/</from>과는 맞는다

· <outbound-rule>사용시 코드 안에 모든 URL들은 인코딩 되어야 한다는 것을 기억하라.

· 정규식들은 조합되며 그 때 . 자바용 정규 표현 구문을 참조하여라

참조 : http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

 

간단하게 ‘룰’ 필터를 실행 시키면 다음과 같은 슈도 코드처럼 된다.

Pattern.compile(<from> element);

pattern.matcher(each request url);

matcher.replaceAll(<to> element);

if ( <condition> elements match && pattern matched ) {

execute <run> elements (if any)

perform <to> element (if any)

}

<rule> 요소

룰에 기초한다.

 

Attribute

Possible Value

Explanation

enabled (optional)

true (default)

Enable this rule.

 

false

Disable this rule.

 

예제로 /world/usa/nyc를 요청시에 /world.jsp?country=usa&city=nyc로 변환 되어 포워딩 된다.

 

<rule enabled="true">

<from>^/world/([a-z]+)/([a-z]+)$</from>

<to>/world.jsp?country=$1&amp;city=$2</to>

</rule>

 

<outbound-rule> 요소

일반적인 ‘룰’과 매우 비슷하게 보이지만 response.encodeURL()를 통과하여 url이 재 작성된다.

 

Attribute

Possible Value

Explanation

enabled (optional)

true (default)

Enable this rule.

false

Disable this rule.

encodefirst (optional)

true

Run encodeURL() before running this outbound rule.

false (default)

Run encodeURL() after running this outbound rule.

 

예제.

<outbound-rule>

<from>^/world.jsp?country=([a-z]+)&amp;city=([a-z]+)$</from>

<to>/world/$1/$2</to>

</outbound-rule>

 

코드로 JSP 예제를 사용.

<a href="">nyc</a> 가

<a href="/world/usa/nyc">nyc</a> 로 출력됨.

 

JSTL을 사용해도 잘 동작함.

 

 

<from> 요소

 

<to> 요소

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함