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.
