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

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

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

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

Sun Java System Web Server 7.0은 강력한 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 리디렉션을 구성합니다. 또한 Sun Java System Web Server 7.0에서는 status="301" 매개 변수를 추가하여 301 Moved Permanently 리디렉션이 필요한 것을 대신 나타낼 수도 있습니다.


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