Zadanie pravidiel presmerovania v súbore JSON

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ť.

Panel testovania presmerovaní