Átirányítási szabályok megadása JSON-fájlban

Az URL-átirányítási szabályokat egy JSON-fájlban adhatja meg.

Az URL-átirányítási szabályok megadásához használja a következő formátumot egy JSON-fájlban.

{
         "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
                }
        ]
} 

A JSON-fájlban lévő külső befoglaló szerkezet egy tömb. A tömb a szabálypéldányokat tartalmazza.

A rendszer először a "string" szabályokat, majd a "wildcard" szabályokat értékeli egymás után. Ha a szabályok valamelyike megfelel, a további szabályokat nem értékeli a rendszer, hanem létrehozza a megfelelő átirányítást.

Az egyes szabályok a következő tulajdonságokat tartalmazzák:

  • A "comment" tulajdonság olyan opcionális karakterlánc, amely nem befolyásolja a szabályok értékelését. Megjegyzéseket vagy magyarázatot tartalmaz.

  • Az "expression" tulajdonság olyan kötelező karakterlánc, amely megfelel a bejövő, webhelyhez képest relatív URL-címnek. A helyettesítő karakterekre vonatkozó szabályban a csillag (*) token nullának vagy több karakternek felelhet meg.

  • A "location" tulajdonság olyan kötelező karakterlánc, amely az átirányítás helyét vagy célhelyét jelzi. Az átirányítás lehet teljes vagy relatív URL-cím.

  • A "code" tulajdonság olyan opcionális egész szám, amely az átirányítás kiadásakor használandó HTTP-válaszkódot adja meg. Az érték az alábbi egész számok egyike lehet:

    • 301: Azt jelzi, hogy az erőforrást véglegesen áthelyezték. Ez az alapértelmezett érték, ha a "code" tulajdonság kimaradt.

    • 302: Azt jelzi, hogy az erőforrást ideiglenesen áthelyezték.

  • A "type" tulajdonság olyan opcionális karakterlánc, amely az átirányítási szabály típusát jelzi. Az érték az alábbi karakterláncok egyike lehet:

    • "string": egy olyan gyorsabb szabályt ad meg, amely kifejezése pontosan megfelel a teljes bemeneti URL-címnek.

    • "wildcard": olyan helyettesítőkarakter-szabályt ad meg, amely az URL-címek egy adott számának felel meg. Ez az alapértelmezett érték, ha a tulajdonság kimaradt.

Helytokenek

A helytokenek átirányítási hely előállításában segíthetnek. A következő helytokenek mindegyike segíthet egy átirányítás megadásában:

  • <$urlPath$>: Az egyező URL-cím útvonal része.

  • <$urlQueryString$>: Az egyező URL-címből a teljes URL lekérdezési karakterlánca.

  • <$urlQueryStringExcept(name1,name2)$>: Az egyező URL-címből a teljes URL lekérdezési karakterlánca, a megnevezett paraméterek nélkül.

  • <$wildcard(N)$>: Az egyező URL-címben szereplő egyező helyettesítő karakter egyalapú indexe. (Hasonló a reguláris kifejezésekben előforduló \1..\9 értékhez.)

  • <$name$>: A megnevezett lekérdezési karakterlánc paraméterének értéke. Ha például a bemeneten a msmith: ?page=42 lekérdezési karakterlánccal rendelkezik, akkor a helyen a <$page$> használatával elhelyezheti a helyre a '42' értéket.

Korlátozások

A következő korlátozások a teljes redirects.json fájlra, valamint a benne lévő szabályokra vonatkoznak:

  • Az Oracle Content Management által elfogadott maximális teljes fájlméret 250 KB.

  • A redirects.json fájlban lévő szabályok maximális száma 1000.

  • Egy szabály "expression" hossza legfeljebb 1000 karakter lehet.

  • Egy szabály "location" hossza legfeljebb 2000 karakter lehet.

  • A '*' tokenek maximális száma egy helyettesítőkarakter-szabály kifejezésében 10.

Példa karakterlánc egyeztetésére

Szabály:

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

A következő URL-cím felelne meg a szabálynak:

/old/page.jsp?id=material&type=glass
  • Az eredményül kapott hely: /new/material.htm

  • A teljes URL megegyezik, beleértve a lekérdezési karakterláncot is.

  • Habár a helyen az <$id$> van használva, ehhez a példához nem szükséges, mivel csak egy lehetséges lekérdezési karakterlánc egyezhet. A helyet így lehetne leírni: /new/material.htm

A következő URL-címek nem felelnének meg a szabálynak:

  • /old/page.jsp

    ( A szabály kifejezése olyan lekérdezési karakterláncot ad, amelynek meg kell egyeznie.)

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

    (A jelölt URL-címben lévő extra &index=2 nem egyezik meg pontosan a szabály kifejezésével.)

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

    (A “string” szabályban a lekérdezési karakterlánc paramétereinek sorrendje azonos kell, hogy legyen.)

Példa helyettesítő karakter egyeztetésére

Szabály:

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

A következő URL-címek felelnének meg a szabálynak:

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

    • Az eredményül kapott hely: /new/XT1045/specs.html

    • Az URL-cím útvonal része megegyezik, ezért a rendszer a lekérdezési karakterláncot is megvizsgálja az egyezőség szempontjából.

    • A jelen példában szereplő paraméterek sorrendje megegyezhet a szabály kifejezésében lévő paraméterek sorrendjével, de ez nem kötelező.

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

    • Az eredményül kapott hely: /new/XT1045/specs.html

    • Az URL-cím útvonal része megegyezik a szabály kifejezésével a kérdőjel (?) előtt, ezért a rendszer ellenőrzi a paraméterek egyezését is.

    • Habár a szabály kifejezésében a paraméterek sorrendje eltérő, a rendszer egyenként egyezteti a paramétereket.

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

    • Az eredményül kapott hely: /new/XT1045/specs.html

    • Az URL-cím útvonal része megegyezik, ezért a rendszer a lekérdezési karakterláncot is megvizsgálja az egyezőség szempontjából.

    • A jelölt URL-cím extra &unrelated=thing paramétert tartalmaz, de mivel a szabály kifejezésében lévő megnevezett lekérdezési paraméterek megegyeznek, a szabály is megfelelőnek tekintendő.

    • Az unrelated paraméter tokenként lenne elérhető a helyen a következőként: <$unrelated$>, és az értéke thing lenne, még akkor is, ha nem járult hozzá a szabály egyezőségéhez.

A következő URL-címek nem felelnének meg:

  • /old/pages/info.jsp

    (Az URL-cím útvonal része nem egyezik meg a szabály kifejezésének útvonal részével.)

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

    (Az URL-cím útvonal része megegyezik a szabály kifejezésének útvonal részével, de a szabály kifejezésében lévő lekérdezési paraméterek nem egyeznek.)

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

    (Az URL-cím útvonal része megegyezik a szabály kifejezésének útvonal részével, de a szabály kifejezésében lévő lekérdezési paraméterek nem mindegyike egyezik.)

Tokentömb definiálása

A redirects.json fájlban létrehozhatja tokendefiníciók tömbjét is, amely segítséget jelent több kreatív URL-címet támogató átirányítások konfigurálásánál. Ez lehetővé teszi a megfelelő átirányítást a bejövő URL-cím jellemzői alapján.

Az átirányítási szabályok URL-címeiben való használatra tokenek definiálásához használja a következő formátumot a redirects.json fájlban.

{
         "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"
                },              
        ]
}

A tokenDefinitions tömb a következő tulajdonságokkal rendelkezik:

  • "token": a definiálni kívánt token neve.

  • "type": a következők egyike:

    • "hostmatch" a bejövő URL-cím gazdagépértékének egyeztetéséhez.

    • "pathmatch" a bejövő URL-cím elérési útvonalnév értékének egyeztetéséhez.

    • "querymatch" a bejövő URL-cím lekérdezési értékének egyeztetéséhez.

  • "expression": az a kifejezés, amelyet az egyeztetésnél kell használni. Helyettesítő karakterek használhatók.

  • "value": az az érték, amelyet a tokennél kell használni.

  • "flags": alapértelmezés szerint a kifejezésen alapuló egyeztetésnél a kis- és nagybetűk különbözőnek számítanak, ha a flags tulajdonság nincs caseinsensitive értékűre beállítva.

A token értékének kiszámításakor a tokenDefinitions tömb elemeit sorban veszi számításba a rendszer. Az első egyező definíciót fogja használni. Ha nincs a tokennek megfelelő tokendefiníció, akkor üres karakterláncot használ helyette a rendszer. A célszerűség és a teljesítmény érdekében a gyakran használt tokeneket a tokenDefinitions lista elején kell elhelyezni.

A tokenDefinitions tömbre a következő korlátozások érvényesek:

  • Legfeljebb 250 tokendefiníciót hozhat létre.

  • A token névnek 100 karakternél rövidebbnek kell lennie.

  • Az expression legfeljebb 10 helyettesítő karaktert tartalmazhat.

  • Az expression tulajdonságnak 1000 karakternél rövidebbnek kell lennie.

  • A value tulajdonságnak 1000 karakternél rövidebbnek kell lennie.

Példa

A redirects.json fájl például a következő lehet:

{
         "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"
                },                                              
        ]
}

Ebben az esetben a szabály location tulajdonsága egy <$pathPrefix$> tokennel rendelkezik. A pathPrefix token a tokenDefinitions szakaszban van definiálva. Ha a bejövő URL-cím megegyezik a "vanity.com" értékkel, akkor a pathPrefix beállítása /fashion értékű lesz. Ezt a location válaszban használja a rendszer, így a eredmény /fashion/about/new-privacy-policy.html lesz.

Tegyük fel, hogy az első kreatív tartományi URL-cím http://example.com/legacy-privacy-policy.html. Ez kizárólag az első átirányítási szabálynak felelne meg.

A deklarált location ennél a szabálynál <$pathPrefix$>/about/new-privacy-policy.html. Ebben az esetben a <$pathPrefix$> tokent kell kiértékelni. Ennek végrehajtásához a tokenDefinitions tömb elemeit veszi sorra a rendszer egyezés kereséséhez.

Az első tokendefiníciót fogja használni. Ennek token értéke a kívánt elem, így további kiértékelése következik. A vanity.com kifejezés nem egyezik meg a bejövő URL-cím example.com értékével, így ez a definíció nem felel meg a követelményeknek, és a számbavétel folytatódik.

Ezen a ponton nincs több tokendefiníció, így üres karakterláncot használ a rendszer a <$pathPrefix$> token értékéhez. Az ennél az átirányításnál visszaadott végleges hely az /about/new-privacy-policy.html.

Tegyük fel, hogy a második kreatív tartományi URL-cím http://vanity.com/legacy-privacy-policy.html. Az első URL-címhez hasonlóan a deklarált location ennél a szabálynál <$pathPrefix$>/about/new-privacy-policy.html. Ebben az esetben a <$pathPrefix$> tokent kell kiértékelni. Ennek végrehajtásához a tokenDefinitions tömb elemeit veszi sorra a rendszer egyezés kereséséhez.

Az első tokendefiníciót fogja használni. Az előzőhöz hasonlóan ennek token értéke a kívánt elem, így további kiértékelése következik. A vanity.com kifejezés megegyezik a bejövő URL-cím vanity.com értékével, így ez a definíció megfelel a követelményeknek, és a /fashion értéket használja a rendszer a token értékeként.

Mivel egyezés található a token számára, a tokendefiníciók tömbjének számbavétele befejeződik, és a végleges hely kiszámításának eredménye /fashion/about/new-privacy-policy.html lesz.

Webhely-átirányítások tesztelése

Webhely szerkesztésekor tesztelheti a webhely-átirányításokat: ehhez nyissa meg a Beállítások panelt, és kattintson az Átirányítások elemre. Adja meg az ellenőrizni kívánt URL-címet, és kattintson a Tesztelés elemre.

Átirányítások tesztelése panel