JSON 파일에 재지정 규칙 지정

JSON 파일에 URL 재지정 규칙을 지정할 수 있습니다.

다음 형식을 JSON 파일에 사용하여 URL 재지정 규칙을 지정하십시오.

{
         "redirectRules":
         [
                {
                        "type": "string",
                        "comment": "this rule is applied first",
                        "expression": "/index.htm",
                        "location": "/home.html"
                },
                {
                        "type": "wildcard",
                        "expression": "/items/*?page=*",
                        "location": "/<$page$>?item=<$wildcard(1)$>",
                        "code": 302
                }
        ]
} 

JSON 파일의 바깥쪽 포함 구조는 배열입니다. 배열에는 규칙 인스턴스가 포함됩니다.

"string" 규칙이 먼저 평가되고 이어서 "wildcard" 규칙이 순서대로 평가됩니다. 규칙 중 하나가 일치하면 후속 규칙 평가가 중단되고 해당하는 재지정이 생성됩니다.

각 규칙에는 다음 속성이 있습니다.

  • "comment" 속성은 규칙 평가에 영향을 주지 않는 선택적 문자열입니다. 메모 또는 주석이 포함됩니다.

  • "expression" 속성은 수신 사이트-상대 URL과 일치시키는 필수 문자열입니다. 와일드 카드 문자 규칙에서 별표(*) 토큰은 0개 이상의 문자와 일치합니다.

  • "location" 속성은 재지정 위치 또는 목적지를 나타내는 필수 문자열입니다. 재지정은 전체 또는 상대 URL일 수 있습니다.

  • "code" 속성은 재지정을 실행할 때 사용할 HTTP 응답 코드를 제공하는 선택적 정수입니다. 값은 다음 정수 중 하나여야 합니다.

    • 301: 리소스가 영구적으로 이동되었음을 나타냅니다. "code" 속성이 생략된 경우 기본값입니다.

    • 302: 리소스가 일시적으로 이동되었음을 나타냅니다.

  • "type" 속성은 재지정 규칙의 유형을 나타내는 선택적 문자열입니다. 값은 다음 문자열 중 하나여야 합니다.

    • "string"은 표현식이 전체 입력 URL과 정확히 일치하는 빠른 규칙을 지정합니다.

    • "wildcard"는 수많은 URL과 일치할 수 있는 와일드 카드 문자 규칙을 지정합니다. 속성이 생략된 경우 기본값입니다.

위치 토큰

위치 토큰을 사용하여 재지정 위치를 설계할 수 있습니다. 다음의 각 위치 토큰은 재지정을 지정하는 데 도움이 됩니다.

  • <$urlPath$>: 일치 URL의 경로 부분입니다.

  • <$urlQueryString$>: 일치 URL의 전체 URL 질의 문자열입니다.

  • <$urlQueryStringExcept(name1,name2)$>: 일치 URL의 전체 URL 질의 문자열에서 명명된 매개변수를 뺀 값입니다.

  • <$wildcard(N)$>: 일치 URL에서 일치 와일드 카드 문자의 1부터 시작하는 인덱스입니다. (정규 표현식의 \1..\9와 비슷합니다.)

  • <$name$>: 명명된 질의 문자열 매개변수의 값입니다. 예를 들어, 입력 시 질의 문자열 msmith: ?page=42가 있으면 위치에 <$page$>를 사용하여 '42'를 위치에 넣을 수 있습니다.

제한사항

다음 제한사항은 redirects.json 파일 전체와 파일에 포함된 규칙에 적용됩니다.

  • Oracle Content Management에서 허용된 최대 전체 파일 크기는 250KB입니다.

  • redirects.json 파일의 최대 규칙 수는 1,000개입니다.

  • 규칙의 최대 "expression" 길이는 1,000자입니다.

  • 규칙의 최대 "location" 길이는 2,000자입니다.

  • 와일드 카드 문자 규칙 표현식의 최대 '*' 토큰 수는 10개입니다.

문자열 일치 예제

규칙:

        {
              "type": "string",
              "expression": "/old/page.jsp?id=material&type=glass",
              "location": "/new/<$id$>.htm"
        }            

다음 URL은 규칙과 일치합니다.

/old/page.jsp?id=material&type=glass
  • 결과 위치는 /new/material.htm입니다.

  • 질의 문자열을 포함한 전체 URL이 일치합니다.

  • <$id$>가 위치에 사용되지만 가능한 질의 문자열이 하나만 일치할 수 있으므로 이 예제에는 필요하지 않습니다. 위치는 /new/material.htm으로 작성되었을 수 있습니다.

다음 URL은 규칙과 일치하지 않습니다.

  • /old/page.jsp

    (규칙 표현식은 일치시킬 질의 문자열을 제공합니다.)

  • /old/page.jsp?id=material&type=glass&index=2

    (후보 URL의 추가 &index=2는 규칙 표현식과 정확히 일치하지 않습니다.)

  • /old/page.jsp?type=glass&id=material

    (질의 문자열 매개변수의 순서는 “string” 규칙에서 일치해야 합니다.)

와일드 카드 문자 일치 예제

규칙:

        {
              "type": "wildcard",
              "expression": "/old/*/pages/*?id=*&item=sheet-*",
              "location": "/new/<$id$>/<$wildcard(4)$>.html"
        }            

다음 URL은 규칙과 일치합니다.

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs

    • 결과 위치는 /new/XT1045/specs.html입니다.

    • URL의 경로 부분이 일치하므로 일치 조건에 대해 질의 문자열도 검사됩니다.

    • 이 예제의 매개변수는 규칙 표현식과 매개변수 순서가 일치하지만 이것이 필수는 아닙니다.

  • /old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045

    • 결과 위치는 /new/XT1045/specs.html입니다.

    • URL의 경로 부분이 물음표(?) 앞의 규칙 표현식과 일치하므로 매개변수도 일치하는지 검사합니다.

    • 규칙 표현식에서 매개변수가 다른 순서로 나열되어 있지만 매개변수는 개별적으로 일치합니다.

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing

    • 결과 위치는 /new/XT1045/specs.html입니다.

    • URL의 경로 부분이 일치하므로 일치 조건에 대해 질의 문자열도 검사됩니다.

    • 후보 URL에 추가 &unrelated=thing 매개변수가 있지만 규칙 표현식에 명명된 질의 매개변수가 일치하므로 규칙이 일치하는 것으로 간주됩니다.

    • unrelated 매개변수는 위치에서 <$unrelated$>와 같이 토큰으로 사용 가능하며 규칙 일치에 기여하지 않더라도 thing 값을 갖습니다.

다음 URL은 일치하지 않습니다.

  • /old/pages/info.jsp

    (URL의 경로 부분이 규칙 표현식의 경로 부분과 일치하지 않습니다.)

  • /old/phones/android/pages/info.asp

    (URL의 경로 부분이 규칙 표현식의 경로 부분과 일치하지만, 규칙 표현식의 질의 매개변수가 일치하지 않습니다.)

  • /old/phones/android/pages/info.asp?id=cellular

    (URL의 경로 부분이 규칙 표현식의 경로 부분과 일치하지만, 규칙 표현식의 모든 질의 매개변수가 일치하지는 않습니다.)

토큰 배열 정의

여러 vanity URL을 지원하는 재지정을 구성할 때 유용하도록 redirects.json 파일 내에 토큰 정의 배열을 생성할 수도 있습니다. 그러면 수신 URL의 특성에 따라 적절히 재지정할 수 있습니다.

다음 형식을 redirects.json 파일에 사용하여 재지정 규칙 URL에서 사용할 토큰을 정의하십시오.

{
         "tokenDefinitions":
         [
                {
                        "token": "sitePrefix",
                        "type": "hostmatch",
                        "expresion": "example.com"
                        "value": ""
                },
                {
                        "token": "sitePrefix",
                        "type": "hostmatch",
                        "expresion": "*.com"
                        "value": "/site/Starter-Site"
                },
                {
                        "token": "gotoRedirect",
                        "type": "pathmatch",
                        "expresion": "*oracle*"
                        "value": "https://www.oracle.com"
                        "flags": "caseinsensitive"
                },              
        ]
}

tokenDefinitions에는 다음 속성이 있습니다.

  • "token": 정의할 토큰의 이름입니다.

  • "type": 다음 중 하나입니다.

    • "hostmatch" - 수신 URL의 호스트 값과 일치합니다.

    • "pathmatch" - 수신 URL의 경로명 값과 일치합니다.

    • "querymatch" - 수신 URL의 질의 값과 일치합니다.

  • "expression": 일치에 사용되는 표현식입니다. 와일드 카드 문자가 지원됩니다.

  • "value": 토큰에 사용되는 값입니다.

  • "flags": flags 값이 caseinsensitive로 설정되지 않는 한, 기본적으로 표현식 일치는 대소문자를 구분합니다.

토큰 값을 계산할 때 tokenDefinitions 배열이 순서대로 열거됩니다. 첫번째 일치하는 정의가 사용됩니다. 토큰 정의가 토큰을 충족하지 않으면 대신 빈 문자열이 사용됩니다. 편의상 성능을 위해 자주 사용되는 토큰이 tokenDefinitions 목록의 맨 위에 놓여야 합니다.

tokenDefinitions에는 다음 제약 조건이 있습니다.

  • 최대 250개의 토큰 정의를 생성할 수 있습니다.

  • token 이름은 100자 미만이어야 합니다.

  • expression은 최대 10개의 와일드 카드 문자를 포함할 수 있습니다.

  • expression은 1000자 미만이어야 합니다.

  • value는 1000자 미만이어야 합니다.

예제

예를 들어, 다음 redirects.json 파일이 있을 수 있습니다.

{
         "redirectRules":
         [
                {
                        "type": "string",
                        "expression": "/legacy-privacy-policy.html",
                        "location": "<$pathPrefix$>/about/new-privacy-policy.html"
                },              
        ]
         "tokenDefinitions":
         [
                {
                        "token": "pathPrefix",
                        "type": "hostmatch",
                        "expression": "vanity.com"
                        "value": "/fashion"
                },                                              
        ]
}

이 경우 규칙의 location 속성에 <$pathPrefix$> 토큰이 있습니다. pathPrefix 토큰은 tokenDefinitions 섹션에 정의됩니다. 수신 URL이 "vanity.com"과 일치하면 pathPrefix 값은 /fashion으로 설정됩니다. 이는 location 응답에 사용되며 결과적으로 /fashion/about/new-privacy-policy.html이 됩니다.

첫번째 vanity 도메인 URL이 http://example.com/legacy-privacy-policy.html이라고 가정해 보겠습니다. 이것은 첫번째이자 유일한 재지정 규칙과 일치합니다.

이 규칙에 대해 선언된 location<$pathPrefix$>/about/new-privacy-policy.html입니다. 이 상황에서 <$pathPrefix$> 토큰을 평가해야 합니다. 이를 위해 tokenDefinitions 배열이 열거되어 일치항목을 찾습니다.

첫번째 토큰 정의가 고려됩니다. token이 원하는 토큰이므로 더 평가됩니다. 표현식 vanity.com이 수신 URL의 example.com과 일치하지 않으므로 이 정의는 요구사항을 충족하지 않으며 열거가 계속됩니다.

이 시점에서 더 이상 토큰 정의가 없으므로 <$pathPrefix$> 토큰 값에 빈 문자열이 사용됩니다. 이 재지정으로 반환된 최종 위치는 /about/new-privacy-policy.html입니다.

두번째 vanity 도메인 URL이 http://vanity.com/legacy-privacy-policy.html이라고 가정해 보겠습니다. 첫번째 URL과 마찬가지로 이 규칙에 대해 선언된 location<$pathPrefix$>/about/new-privacy-policy.html입니다. 이 상황에서 <$pathPrefix$> 토큰을 평가해야 합니다. 이를 위해 tokenDefinitions 배열이 열거되어 일치항목을 찾습니다.

첫번째 토큰 정의가 고려됩니다. 이전처럼 token이 원하는 토큰이므로 더 평가됩니다. 표현식 vanity.com이 수신 URL의 vanity.com과 일치하므로 이 정의는 요구사항을 충족하며 /fashion 값이 토큰 값으로 사용됩니다.

토큰의 일치항목을 찾았으므로 토큰 정의 배열의 열거가 정지되고 최종 위치는 /fashion/about/new-privacy-policy.html로 계산됩니다.

사이트 재지정 테스트

사이트를 편집할 때 설정 패널을 열고 재지정을 눌러 사이트 재지정을 테스트할 수 있습니다. 테스트할 URL을 입력하고 테스트를 누릅니다.

재지정 테스트 패널