Pravidlá presmerovania pre adresy URL môžete zadať v súbore JSON.
Na zadanie pravidiel presmerovania pre adresy URL použite nasledujúci formát v súbore 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 } ] }
Vonkajšia obsahová štruktúra v súbore JSON je pole. Pole obsahuje príklady pravidiel.
Pravidlá "string"
sa vyhodnotia ako prvé a potom sa vyhodnotia pravidlá "wildcard"
v príslušnom poradí. Keď sa jedno z pravidiel zhoduje, hodnotenie následných pravidiel sa zruší a vygeneruje sa zodpovedajúce presmerovanie.
Každé pravidlo má nasledujúce vlastnosti:
Vlastnosť "comment"
je voliteľný reťazec, ktorý nemá na hodnotenie pravidiel žiadny vplyv. Obsahuje poznámky alebo komentár.
Vlastnosť "expression"
je povinným reťazcom, ktorý sa porovnáva s prichádzajúcou adresou URL lokality. Token hviezdičky (*
) v pravidle wildcard zodpovedá 0 alebo viacerým znakom.
Vlastnosť "location"
je povinným reťazcom, ktorý označuje miesto alebo cieľ presmerovania. Na presmerovanie možno použiť úplnú alebo relatívnu adresu URL.
Vlastnosť "code"
je voliteľné celé číslo, ktoré poskytuje kód odozvy HTTP. Tento kód sa použije pri vykonávaní presmerovania. Hodnota musí byť jedno z nasledujúcich celých čísel:
301: Označuje natrvalo premiestnený prostriedok. Ide o predvolenú hodnotu, ak sa vynechá vlastnosť "code"
.
302: Označuje dočasne premiestnený prostriedok.
Vlastnosť "type” je voliteľný reťazec, ktorý označuje typ pravidla presmerovania. Hodnota musí byť jeden z nasledujúcich reťazcov:
"string"
určuje rýchlejšie pravidlo, ktorého výraz sa presne zhoduje s celou vstupnou adresou URL.
"wildcard"
určuje pravidlo wildcard, ktoré môže zodpovedať viacerým adresám URL. Ide o predvolenú hodnotu, ak sa vlastnosť vynechá.
Tokeny umiestnenia
Pomocou tokenov umiestnenia môžete vytvárať umiestnenia presmerovania. Každý z nasledujúcich tokenov umiestnenia môže pomôcť určiť presmerovanie:
<$urlPath$>
: Časť cesty zodpovedajúcej adresy URL.
<$urlQueryString$>
: Celý reťazec dopytu adresy URL zo zodpovedajúcej adresy URL.
<$urlQueryStringExcept(name1,name2)$>
: Celý reťazec dopytu adresy URL zo zodpovedajúcej adresy URL bez pomenovaných parametrov.
<$wildcard(N)$>
: Indexovanie od jednotky pre zhodný zástupný znak v zodpovedajúcej adrese URL. (Ide o podobný token, ako je \1..\9
v regulárnych výrazoch.)
<$name$>
: Hodnota pomenovaného parametra reťazca dopytu. Ak máte napríklad na vstupe reťazec dopytu msmith: ?page=42
, v umiestnení môžete použiť <$page$>
, aby sa do umiestnenia vložilo číslo '42'
.
Obmedzenia
Pre súbor redirects.json
ako celok a pre pravidlá, ktoré obsahuje, platia nasledujúce obmedzenia:
Maximálna celková veľkosť súboru akceptovaná službou Oracle Content Management je 250 kB.
Maximálny počet pravidiel v súbore redirects.json
je 1 000.
Maximálna dĺžka vlastnosti "expression"
pre pravidlo je 1 000 znakov.
Maximálna dĺžka vlastnosti "location"
pre pravidlo je 2 000 znakov.
Maximálny počet tokenov '*'
vo výraze pravidla wildcard je 10.
Príklad zhody reťazca
Pravidlo:
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
Pravidlu by zodpovedala nasledujúca adresa URL:
/old/page.jsp?id=material&type=glass
Výsledné umiestnenie by bolo: /new/material.htm
Zhoduje sa celá adresa URL vrátane reťazca dopytu.
Hoci sa v umiestnení používa <$id$>
, pre tento príklad to nie je potrebné, pretože zhodovať by sa mohol len jeden možný reťazec dopytu. Umiestnenie mohlo byť zapísané ako /new/material.htm
.
Pravidlu by nezodpovedali nasledujúce adresy URL:
/old/page.jsp
(Výraz pravidla poskytuje reťazec dopytu, ktorý sa musí zhodovať.)
/old/page.jsp?id=material&type=glass&index=2
(Dodatočná časť &index=2
v adrese URL kandidáta sa s výrazom pravidla nezhoduje presne.)
/old/page.jsp?type=glass&id=material
(Poradie parametrov reťazca dopytu v pravidle “string” sa musí zhodovať.)
Príklad zhody zástupného znaku
Pravidlo:
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
Pravidlu by zodpovedali nasledujúce adresy URL:
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
Výsledné umiestnenie by bolo: /new/XT1045/specs.html
Časť cesty adresy URL sa zhoduje, takže reťazec dopytu sa preskúma aj z hľadiska zhodných podmienok.
Poradie parametrov v tomto príklade sa náhodou zhoduje s poradím parametrov vo výraze pravidla, ale nie je to povinné.
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
Výsledné umiestnenie by bolo: /new/XT1045/specs.html
Časť cesty adresy URL sa zhoduje s výrazom pravidla pred otáznikom (?
), takže sa kontroluje aj zhoda v parametroch.
Aj keď sú parametre vo výraze pravidla uvedené v inom poradí, zhodujú sa jednotlivo.
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
Výsledné umiestnenie by bolo: /new/XT1045/specs.html
Časť cesty adresy URL sa zhoduje, takže reťazec dopytu sa preskúma aj z hľadiska zhodných podmienok.
Adresa URL kandidáta má dodatočný parameter &unrelated=thing
, ale keďže pomenované parametre dopytu vo výraze pravidla sa zhodujú, pravidlo sa považuje za zhodné.
Parameter unrelated
by bol v umiestnení prítomný ako token <$unrelated$>
a mal by hodnotu thing
, aj keď k zhode pravidla neprispel.
Nezhodovali by sa nasledujúce adresy URL:
/old/pages/info.jsp
(Časť cesty adresy URL sa nezhoduje s časťou cesty výrazu pravidla.)
/old/phones/android/pages/info.asp
(Časť cesty adresy URL sa zhoduje s časťou cesty výrazu pravidla, ale parametre dopytu vo výraze pravidla sa nezhodujú.)
/old/phones/android/pages/info.asp?id=cellular
(Časť cesty adresy URL sa zhoduje s časťou cesty výrazu pravidla, ale nezhodujú sa všetky parametre dopytu vo výraze pravidla.)
Definovanie poľa tokenu
Môžete vytvoriť aj pole definícií tokenu v rámci súboru redirects.json
ako pomôcku pri konfigurácii presmerovaní, ktoré podporujú viaceré zjednodušené adresy URL. To vám umožní vykonať správne presmerovanie na základe charakteristík prichádzajúcej adresy URL.
Pomocou nasledujúceho formátu v súbore redirects.json
definujte tokeny, ktoré sa majú používať v adresách URL pravidiel presmerovania.
{ "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" }, ] }
Definície tokenDefinitions majú nasledujúce vlastnosti:
"token"
: Názov tokenu, ktorý sa má definovať.
"type"
: Jeden z nasledujúcich typov:
"hostmatch"
na porovnanie hodnoty hostiteľa prichádzajúcej adresy URL.
"pathmatch"
na porovnanie hodnoty názvu cesty prichádzajúcej adresy URL.
"querymatch"
na porovnanie hodnoty dopytu prichádzajúcej adresy URL.
"expression"
: Výraz, ktorý by sa mal používať na porovnanie. Zástupné znaky sú podporované.
"value"
: Hodnota, ktorá by sa mala použiť pre token.
"flags"
: Pri porovnávaní výrazov sa predvolene rozlišujú veľké a malé písmená, ak nie je hodnota flags
nastavená na caseinsensitive
.
Počas výpočtu hodnoty tokenu je pole tokenDefinitions
vymenované v poradí. Použije sa prvá zhodná definícia. Ak tokenu nebudú vyhovovať žiadne definície tokenu, použije sa prázdny reťazec. V záujme vyššej účinnosti a výkonu sa odporúča umiestniť často používané tokeny na začiatok zoznamu tokenDefinitions
.
Definície tokenDefinitions
majú nasledujúce obmedzenia:
Vytvoriť môžete najviac 250 definícií tokenu.
Názov pre token
musí byť kratší ako 100 znakov.
Vlastnosť expression
môže obsahovať maximálne 10 zástupných znakov.
Vlastnosť expression
musí byť kratšia ako 1 000 znakov.
Vlastnosť value
musí byť kratšia ako 1 000 znakov.
Príklad
Môžete mať napríklad nasledujúci súbor 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" }, ] }
V tomto prípade vlastnosť location
pravidla obsahuje token <$pathPrefix$>
. Token pathPrefix
je definovaný v sekcii tokenDefinitions
. Ak prichádzajúca adresa URL zodpovedá výrazu "vanity.com", potom sa hodnota pathPrefix
nastaví na /fashion
. Táto hodnota sa použije v odozve location
a výsledná cesta bude /fashion/about/new-privacy-policy.html
.
Predpokladajme, že zjednodušená adresa URL domény je http://example.com/legacy-privacy-policy.html
. To by vyhovovalo prvému a jedinému pravidlu presmerovania.
Deklarovaná vlastnosť location
pre toto pravidlo je <$pathPrefix$>/about/new-privacy-policy.html
. V tejto situácii je potrebné vyhodnotiť token <$pathPrefix$>
. Použije sa enumerácia poľa tokenDefinitions
na nájdenie zhody.
Použije sa prvá definícia tokenu. Požadovanou vlastnosťou je token
, takže sa bude ďalej vyhodnocovať. Výraz vanity.com
sa nezhoduje s výrazom example.com
prichádzajúcej adresy URL, takže táto definícia nevyhovuje požiadavkám a pokračuje sa v enumerácii.
V tomto bode už nie sú k dispozícii žiadne ďalšie definície tokenu, takže pre hodnotu tokenu <$pathPrefix$>
sa použije prázdny reťazec. Finálnym umiestnením, ktoré bolo vrátené pre toto presmerovanie, je /about/new-privacy-policy.html
.
Predpokladajme, že druhá zjednodušená adresa URL domény je http://vanity.com/legacy-privacy-policy.html
. Rovnako ako pri prvej adrese URL deklarovaná vlastnosť location
pre toto pravidlo je <$pathPrefix$>/about/new-privacy-policy.html
. V tejto situácii je potrebné vyhodnotiť token <$pathPrefix$>
. Použije sa enumerácia poľa tokenDefinitions
na nájdenie zhody.
Použije sa prvá definícia tokenu. Podobne ako vyššie je požadovanou vlastnosťou token
, preto sa ďalej vyhodnocuje. Výraz vanity.com
sa nezhoduje s výrazom vanity.com
prichádzajúcej adresy URL, takže táto definícia nevyhovuje požiadavkám a hodnota /fashion
sa použije ako hodnota tokenu.
Keďže sa pre token našla zhoda, enumerácia poľa definícií tokenu sa zastaví a finálne umiestnenie sa vypočíta ako /fashion/about/new-privacy-policy.html
.
Testovanie presmerovaní lokality
Presmerovania lokality môžete otestovať pri úpravách lokality. Otvorte panel Nastavenia a kliknite na položku Presmerovania. Zadajte adresu URL, ktorá sa má testovať, a kliknite na položku Testovať.