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.