Sun Java System Web Server 7.0 Update 3 관리자 설명서

정규 표현식을 사용하여 URL 리디렉션

Web Server 는 구성 파일에서 정규 표현식(패턴이라고도 함) 및 요청 시간 매개 변수 보간법을 지원하도록 성능이 향상되었습니다. 또한 와일드카드 패턴 일치 지원이 server.xml로 확장되었습니다. URL 리디렉션은 SAF로 구현됩니다. 리디렉션 SAF를 사용하면 특정 접두어와 일치하는 URI를 리디렉션할 수 있습니다. from 매개 변수를 사용하여 접두어를 지정하고 url 또는 url-prefix 매개 변수를 사용하여 리디렉션할 URL을 지정할 수 있습니다. Web Server에서 from 매개 변수는 선택 사항입니다. from을 생략하면 모든 URI가 리디렉션됩니다.

obj.conf 파일의 새 <If>, <Elseif><Else> 태그에서는 SAF 매개 변수가 지원됩니다. 이 태그에는 지시문이 포함되어 있습니다. 이 태그를 사용하면 지시문이 실행되는 조건을 정의할 수 있습니다. 이 태그는 SAF 매개 변수를 동적으로 생성하는 데도 사용할 수 있습니다.

Web Server 는 Apache HTTP 서버의 강력한 mod_rewrite 모듈인 URL 다시 쓰기 기능을 제공합니다. Apache의 mod_rewrite 기능과 달리 <If> 태그는 다음 기능을 제공합니다.

다음과 같은 지시문을 생각할 수 있습니다.


NameTrans fn="redirect"
          	      from="/site1"
                 url="http://site1.mycompany.com"

위의 지시문은 정규 표현식을 사용하여 다음과 같이 다시 쓸 수 있습니다.


<If $uri =~ '^/site1'>
           NameTrans fn="redirect"
           url="http://site1.mycompany.com"
</If>

위의 코드 부분에서는 from 매개 변수 대신 정규 표현식이 사용되었습니다. /site1/*의 모든 요청을 http://site1.mycompany.com/*/index.html로 리디렉션해야 하는 경우에는 다음 기법을 사용할 수 있습니다.


<If $uri =~ '^/site1/(.*)'>
           NameTrans fn="redirect"
           url="http://site1.mycompany.com/$1/index.html"
</If>

여기서 <If> 태그는 일치 값(.*)을 변수 $1에 할당합니다. url 매개 변수에 있는 $1은 원래 요청 값으로 동적으로 교체됩니다. 즉, 위의 obj.conf 코드를 사용하면 /site1/download에 대한 요청이 http://site1.mycompany.com.com/download/index.html로 리디렉션됩니다.

<If>redirect를 함께 사용하면 mod_rewrite의 유연성을 약간은 제공할 수 있습니다. 하지만 mod_rewrite와 달리 <If>는 리디렉션 및 URL 다시 쓰기 이외의 작업에 사용할 수 있습니다. 또한 <If>는 타사 플러그인을 포함한 모든 SAF와 함께 사용할 수 있습니다.

위 방법에서는 302 Moved Temporarily 리디렉션을 구성합니다. Web Server 에서는 status="301" 매개 변수를 추가하여 301 Moved Permanently 리디렉션이 필요한 것을 대신 나타낼 수도 있습니다.


NameTrans fn="redirect" from="/path" url="http://server.example.com" status="301"