JSONファイルでのリダイレクト・ルールの指定
JSONファイル内のURLのリダイレクト・ルールを指定できます。
URLのリダイレクト・ルールを指定するには、JSONファイルで次のフォーマットを使用します。
{
"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"
ルールが順番に評価されます。 ルールの1つが一致すると、後続のルールの評価は放棄され、対応するリダイレクトが生成されます。
各ルールには次のプロパティがあります:
-
"type"プロパティは、リダイレクト・ルールのタイプを示すオプションの文字列です。 値は次のいずれかの文字列である必要があります:
-
"string"
は、式が入力URL全体と正確に一致するより高速なルールを指定します。 -
"wildcard"
は、複数のURLに一致するワイルドカード・ルールを指定します。 プロパティが省略されている場合、これがデフォルト値です。
-
-
"expression"
プロパティは、受信サイト相対URLと一致する必須文字列です。 ワイルドカード・ルールでは、アスタリスク(*
)トークンは0個以上の文字と一致します。 -
"location"
プロパティは、リダイレクトのロケーションまたは宛先を示す必須文字列です。 リダイレクトには、完全URLまたは相対URLを使用できます。 -
"comment"
プロパティは、ルールの評価に影響を与えないオプションのストリングです。 注釈や解説が含まれています。 -
"code"
プロパティは、リダイレクトを発行するときに使用するHTTPレスポンス・コードを提供するオプションの整数です。 値は次の整数のいずれかである必要があります:-
301: リソースが永久に移動したことを示します。 これは、
"code"
プロパティが省略された場合のデフォルト値です。 -
302: リソースが一時的に移動したことを示します。
-
"flags"
プロパティを持つことができるのは、"wildcard"
ルールのみです。 2つの有効なフラグは、カンマで区切られた"globstar"
および"caseinsensitive"
です。"globstar"
フラグは、ワイルドカード・ルール式で"*"が一致する方法を変更します。 通常、「*」は使用可能なすべての文字に一致します。"globstar"
が設定されている場合、URLの次の"/"文字まで"*"が一致します。 デフォルトでは、flags
値にcaseinsensitive
が含まれていないかぎり、式の一致では大/小文字が区別されます。"enabled"
プロパティは、ルールを有効または無効にするために使用されるオプションのプロパティです。 trueまたはfalseを指定できます。 デフォルト値はtrueです。
場所トークン
場所トークンを使用して、リダイレクト場所の作成を支援できます。 次の各場所トークンは、リダイレクトの指定に役立ちます:
-
<$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で受け入れられる最大ファイル・サイズは250 KBです。
-
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$>
がそのロケーションで使用されていますが、この例では必要な問合せ文字列が1つしかないため、この例では必要ありません。 ロケーションは/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
(問合せ文字列パラメータの順序は、「文字列」ルールで一致する必要があります。)
ワイルドカード一致の例:
ルール:
{
"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のパス部分はルール式のパス部分と一致しますが、ルール式のすべての問合せパラメータが一致するわけではありません。)
トークン配列の定義
redirects.json
ファイル内にトークン定義の配列を作成して、複数のバニティURLをサポートするリダイレクトを構成する際に役立つようにすることもできます。 これにより、受信URLの特性に基づいて適切にリダイレクトできます。
リダイレクト・ルールURLで使用するトークンを定義するには、redirects.json
ファイルで次の形式を使用します。
{
"tokenDefinitions":
[
{
"token": "sitePrefix",
"type": "hostmatch",
"expression": "example.com",
"value": ""
},
{
"token": "sitePrefix",
"type": "hostmatch",
"expression": "*.com",
"value": "/site/Starter-Site"
},
{
"token": "gotoRedirect",
"type": "pathmatch",
"expression": "*oracle*",
"value": "https://www.oracle.com",
"flags": "caseinsensitive"
}
]
}
tokenDefinitionsには次のプロパティがあります。
-
"type"
: 次のいずれかです:-
"hostmatch"
:受信URLのホスト値と一致します。 -
受信URLのパス名の値と一致する
"pathmatch"
。 -
"querymatch"
:受信URLの問合せ値と一致します。
-
-
"token"
: 定義するトークンの名前。 -
"expression"
: 照合に使用する式。 ワイルドカード文字がサポートされます。 -
"value"
: トークンに使用する値。 "comment"
: これは、トークン定義の説明または注釈付けに使用するオプションのプロパティです。"flags"
: 2つの有効なフラグは、カンマで区切られた"globstar"
および"caseinsensitive"
です。"globstar"
フラグは、「*」がトークン内で一致する方法を変更します。 通常、「*」は使用可能なすべての文字に一致します。"globstar"
が設定されている場合、URLの次の"/"文字まで"*"が一致します。 デフォルトでは、flags
値にcaseinsensitive
が含まれていないかぎり、式の一致では大/小文字が区別されます。"enabled"
: これは、トークンを有効または無効にするために使用されるオプションのプロパティです。 trueまたはfalseを指定できます。 デフォルト値はtrueです。
トークンの値を計算すると、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
になります。
最初のバニティ・ドメイン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
です。
2番目のバニティ・ドメイン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を入力し、「テスト」をクリックします。
