Vous devez indiquer les règles de réacheminement des URL dans un fichier JSON.
Les règles de réacheminement des URL doivent avoir le format suivant dans un fichier 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 } ] }
La structure contenante externe dans le fichier JSON est un tableau. Le tableau contient des instances de règle.
Les règles "string"
seront évaluées en premier, puis les règles "wildcard"
, dans l'ordre. Lorsque l'une des règles correspond, l'évaluation des règles suivantes est abandonnée et le réacheminement correspondant est généré.
Chaque règle possède les propriétés suivantes :
La propriété "comment"
est une chaîne facultative qui n'a aucune incidence sur l'évaluation des règles. Elle comprend des remarques ou des commentaires.
La propriété "expression"
est une chaîne obligatoire qui correspond à l'URL relative de site entrante. Dans une règle de caractère générique, le jeton d'astérisque (*
) correspond à aucun ou à plusieurs caractères.
La propriété "location"
est une chaîne obligatoire qui indique l'emplacement ou la destination du réacheminement. Le réacheminement peut être une URL complète ou relative.
La propriété "code"
est un nombre entier facultatif qui fournit le code de réponse HTTP à utiliser lors de l'émission du réacheminement. La valeur doit être l'un des entiers suivants :
301 : indique que la ressource a été définitivement déplacée. Il s'agit de la valeur par défaut si la propriété "code"
est omise.
302 : indique que la ressource a été temporairement déplacée.
La propriété "type" est une chaîne facultative qui indique le type de règle de réacheminement. La valeur doit être l'une des chaînes suivantes :
"string"
indique une règle plus rapide dont l'expression correspond exactement à l'URL d'entrée complète.
"wildcard"
indique une règle de caractère générique qui peut correspondre à un certain nombre d'URL. Il s'agit de la valeur par défaut si la propriété est omise.
Jetons d'emplacement
Vous pouvez employer des jetons d'emplacement pour vous aider à créer l'emplacement de réacheminement. Tous les jetons d'emplacement suivants peuvent vous aider à indiquer un réacheminement :
<$urlPath$> :
partie de chemin de l'URL correspondante.
<$urlQueryString$> :
chaîne de requête d'URL complète de l'URL correspondante.
<$urlQueryStringExcept(name1,name2)$> :
chaîne de requête d'URL complète de l'URL correspondante moins les paramètres nommés.
<$wildcard(N)$> :
index de base 1 du caractère générique correspondant dans l'URL correspondante. (Analogue à \1..\9
dans les expressions régulières.)
<$name$> :
valeur du paramètre de chaîne de requête nommé. Par exemple, si vous avez la chaîne de requête msmith: ?page=42
sur l'entrée, vous pouvez utiliser <$page$>
dans l'emplacement pour y indiquer '42'
.
Restrictions
Les restrictions suivantes s'appliquent au fichier redirects.json
dans son ensemble et aux règles qu'il contient :
La taille de fichier globale maximale acceptée par Oracle Content Management est de 250 ko.
Le nombre maximal de règles dans le fichier redirects.json
est de 1 000.
L'élément "expression"
d'une règle ne doit pas dépasser 1 000 caractères.
L'élément "location"
d'une règle ne doit pas dépasser 2 000 caractères.
Le nombre maximal de jetons '*'
dans une expression de règle de caractère générique est de 10.
Exemple de correspondance de chaîne
Règle :
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
L'URL suivante correspondrait à la règle :
/old/page.jsp?id=material&type=glass
L'emplacement obtenu serait : /new/material.htm
L'URL complète correspond, y compris la chaîne de requête.
Bien que <$id$>
soit utilisé dans l'emplacement, il n'est pas nécessaire dans cet exemple, car une seule chaîne de requête peut correspondre. L'emplacement pourrait avoir été écrit comme suit : /new/material.htm
.
Les URL suivantes ne correspondraient pas à la règle :
/old/page.jsp
(L'expression de la règle donne une chaîne de requête qui doit correspondre.)
/old/page.jsp?id=material&type=glass&index=2
(L'élément supplémentaire &index=2
dans l'URL candidate ne correspond pas exactement à l'expression de règle.)
/old/page.jsp?type=glass&id=material
(L'ordre des paramètres de chaîne de requête doivent correspondre dans une règle de chaîne.)
Exemple de correspondance de caractères génériques
Règle :
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
Les URL suivantes correspondraient à la règle :
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
L'emplacement obtenu serait : /new/XT1045/specs.html
La partie de chemin de l'URL correspond, les conditions de correspondance de la chaîne de requête sont donc également examinées.
Dans cet exemple, les paramètres correspondent à l'ordre des paramètres dans l'expression de règle, mais ce n'est pas obligatoire.
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
L'emplacement obtenu serait : /new/XT1045/specs.html
La partie de chemin de l'URL avant le point d'interrogation (?
) correspond à l'expression de règle, la correspondance des paramètres est donc également vérifiée.
Même si les paramètres sont répertoriés dans un ordre différent dans l'expression de règle, ils correspondent individuellement.
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
L'emplacement obtenu serait : /new/XT1045/specs.html
La partie de chemin de l'URL correspond, les conditions de correspondance de la chaîne de requête sont donc également examinées.
L'URL candidate possède un paramètre &unrelated=thing
supplémentaire, mais comme les paramètres de requête nommés dans l'expression de règle correspondent, la règle est considérée comme correspondante.
Le paramètre unrelated
serait disponible dans l'emplacement en tant que jeton <$unrelated$>
et aurait la valeur thing
, même s'il ne contribue pas à la correspondance de la règle.
Les URL suivantes ne correspondraient pas :
/old/pages/info.jsp
(La partie de chemin de l'URL ne correspond pas à la partie de chemin de l'expression de règle.)
/old/phones/android/pages/info.asp
(La partie de chemin de l'URL correspond à la partie de chemin de l'expression de règle, mais les paramètres de requête dans l'expression de règle ne correspondent pas.)
/old/phones/android/pages/info.asp?id=cellular
(La partie de chemin de l'URL correspond à la partie de chemin de l'expression de règle, mais certains paramètres de requête dans l'expression de règle ne correspondent pas.)
Définition d'un tableau de jetons
Vous pouvez également créer un tableau de définitions de jeton dans le fichier redirects.json
afin de faciliter la configuration des réacheminements prenant en charge plusieurs URL de produit. Vous pouvez ainsi effectuer un réacheminement correct en fonction des caractéristiques de l'URL entrante.
Employez le format suivant dans le fichier redirects.json
pour définir les jetons à utiliser dans les URL de règles de réacheminement.
{ "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" }, ] }
Le tableau tokenDefinitions possède les propriétés suivantes :
"token"
: nom du jeton à définir.
"type"
: une des options suivantes :
"hostmatch"
: permet de mettre en correspondance la valeur d'hôte de l'URL entrante.
"pathmatch"
: permet de mettre en correspondance la valeur de chemin d'accès de l'URL entrante.
"querymatch"
: permet de mettre en correspondance la valeur de requête de l'URL entrante.
"expression"
: expression à utiliser pour la correspondance. Les caractères génériques sont pris en charge.
"value"
: valeur à utiliser pour le jeton.
"flags"
: par défaut, la correspondance d'expression fait la distinction entre les majuscules et les minuscules sauf si la valeur flags
est définie sur caseinsensitive
Lors du calcul de la valeur d'un jeton, le tableau tokenDefinitions
est énuméré dans l'ordre. La première définition correspondante est utilisée. Si aucune définition de jeton ne correspond au jeton, une chaîne vide est utilisée à la place. A des fins de commodité et de performance, les jetons fréquemment utilisés doivent être placés au début de la liste tokenDefinitions
.
Les contraintes suivantes s'appliquent au tableau tokenDefinitions
:
Vous pouvez créer jusqu'à 250 définitions de jeton.
Le nom de token
doit comporter moins de 100 caractères.
expression
peut contenir jusqu'à 10 caractères génériques.
expression
doit comporter moins de 1 000 caractères.
value
doit comporter moins de 1 000 caractères.
Exemple
Par exemple, le fichier redirects.json peut être le suivant :
{ "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" }, ] }
Dans ce cas, la propriété location
contient un jeton <$pathPrefix$>
. Le jeton pathPrefix
est défini dans la section tokenDefinitions
. Si l'URL entrante correspond à "vanity.com", la valeur pathPrefix
sera définie sur /fashion
. Cette valeur sera utilisée dans la réponse location
, ce qui donnera : /fashion/about/new-privacy-policy.html
.
Admettons que la première URL de domaine de produit est http://example.com/legacy-privacy-policy.html
. L'URL correspond à la première et unique règle de réacheminement.
La propriété location
déclarée pour cette règle est <$pathPrefix$>/about/new-privacy-policy.html
. Dans ce cas, le jeton <$pathPrefix$>
doit être évalué. Pour ce faire, le tableau tokenDefinitions
est énuméré afin de trouver une correspondance.
La première définition de jeton est considérée. Puisque son jeton token
est celui souhaité, son évaluation se poursuit. L'expression vanity.com
ne correspond pas à l'élément example.com
de l'URL entrante. Cette définition ne satisfait donc pas aux exigences et l'énumération continue.
A ce stade, il n'existe plus d'autre définition de jeton. Une chaîne vide est donc utilisée pour la valeur du jeton <$pathPrefix$>
. L'emplacement final renvoyé pour ce réacheminement est /about/new-privacy-policy.html
.
Admettons que la deuxième URL de domaine de produit est http://vanity.com/legacy-privacy-policy.html
. Comme pour la première URL, la propriété location
déclarée pour cette règle est <$pathPrefix$>/about/new-privacy-policy.html
. Dans ce cas, le jeton <$pathPrefix$>
doit être évalué. Pour ce faire, le tableau tokenDefinitions
est énuméré afin de trouver une correspondance.
La première définition de jeton est considérée. Comme précédemment, puisque son jeton token
est celui souhaité, son évaluation se poursuit. L'expression vanity.com
correspond à l'élément vanity.com
de l'URL entrante. Cette définition satisfait donc aux exigences et la valeur /fashion
est utilisée en tant que valeur du jeton.
Une correspondance ayant été trouvée pour le jeton, l'énumération du tableau de définitions de jeton est arrêtée et l'emplacement final est calculé ainsi : /fashion/about/new-privacy-policy.html
.
Test de réacheminements de site
Vous pouvez tester les réacheminements de site lors de la modification d'un site. Pour ce faire, ouvrez le panneau Paramètres et cliquez sur Réacheminements. Saisissez une URL à tester et cliquez sur Tester.