Puteţi specifica reguli de redirecţionare pentru URL-uri într-un fişier JSON.
Utilizaţi următorul format într-un fişier JSON pentru a specifica reguli de redirecţionare pentru URL-uri.
{ "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 } ] }
Structura exterioară care conţine elemente din fişierul JSON este o matrice. Matricea conţine instanţele regulii.
Regulile "string"
(şir) vor fi evaluate mai întâi, fiind urmate, în ordine, de regulile "wildcard"
(caracter de înlocuire). După ce una dintre reguli corespunde, evaluarea regulilor următoare este abandonată şi este generată redirecţionarea corespunzătoare.
Fiecare regulă are următoarele proprietăţi:
Proprietatea "comment"
(comentariu) este un şir opţional care nu are impact asupra evaluării regulilor. Acesta include note sau comentarii.
Proprietatea "expression"
(expresie) este un şir obligatoriu care corespunde cu adresa URL relativă a site-ului pe care se intră. Într-o regulă bazată pe caractere de înlocuire, tokenul asterisc (*
) corespunde cu zero sau mai multe caractere.
Proprietatea"location"
(locaţie) este un şir obligatoriu care indică locaţia sau destinaţia redirecţionării. Redirecţionarea poate fi un URL complet sau relativ.
Proprietatea "code"
(cod) este un număr întreg opţional care furnizează codul de răspuns HTTP care trebuie utilizat atunci când este emisă redirecţionarea. Valoarea trebuie să fie unul dintre următoarele numere întregi:
301: Arată că resursa a fost mutată definitiv. Aceasta este valoarea prestabilită dacă proprietatea "code"
(cod) este omisă.
302: Arată că resursa a fost mutată temporar.
Proprietatea "type” (tip) este un şir opţional care indică tipul de regulă de redirecţionare. Valoarea trebuie să fie unul dintre următoarele şiruri:
"string"
(şir) specifică o regulă mai rapidă a cărei expresie corespunde exact întregului URL de intrare.
"wildcard"
(caracter de înlocuire) specifică o regulă de caracter de înlocuire care poate corespunde mai multor URL-uri. Aceasta este valoarea prestabilită dacă proprietatea este omisă.
Tokenurile de locaţii
Puteţi utiliza tokenuri de locaţii pentru a ajuta la crearea unei locaţii de redirecţionare. Fiecare dintre următoarele tokenuri de locaţii poate ajuta la specificarea unei redirecţionări:
<$urlPath$>
: Porţiunea de cale a URL-ului asociat.
<$urlQueryString$>
: Întregul şir de interogare URL din URL-ul asociat.
<$urlQueryStringExcept(name1,name2)$>
: Întregul şir de interogare URL din URL-ul asociat, minus parametrii numiţi.
<$wildcard(N)$>
: Indexul bazat pe unu al caracterului de înlocuire care corespunde din URL-ul asociat. (Acesta este similar cu \1..\9
din expresiile obişnuite.)
<$name$>
(nume): Valoarea parametrului şir de interogare numit. De exemplu, dacă aveţi şirul de interogare msmith: ?page=42
la intrare, puteţi utiliza <$page$>
(pagină) în locaţie pentru a introduce '42'
în locaţie.
Restricţiile
Următoarele restricţii se aplică fişierului redirects.json
în ansamblu şi regulilor pe care acesta le conţine:
Dimensiunea maximă a fişierului acceptată de Oracle Content Management este 250 KB.
Numărul maxim de reguli în fişierul redirects.json
este 1000.
Lungimea maximă pentru "expression"
(expresie) pentru o regulă este de 1000 de caractere.
Lungimea maximă pentru "location"
(locaţie) este de 2000 de caractere.
Numărul maxim de tokenuri '*'
dintr-o expresie cu o regulă de caracter de înlocuire este 10.
Exemplu de corespondenţă de şiruri
Regulă:
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
Următorul URL ar corespunde regulii:
/old/page.jsp?id=material&type=glass
Locaţia rezultată ar fi: /new/material.htm
Corespunde întregul URL, inclusiv şirul de interogare.
Deşi <$id$>
este utilizat în locaţie, acesta nu este necesar pentru acest exemplu, deoarece numai un sigur şir de interogare ar putea corespunde. Locaţia ar fi putut fi scrisă astfel: /new/material.htm
.
Următoarele URL-uri nu ar corespunde regulii:
/old/page.jsp
(Expresia regulii dă un şir de interogare care trebuie să corespundă.)
/old/page.jsp?id=material&type=glass&index=2
(Porţiunea suplimentară &index=2
din URL-ul candidat nu corespunde exact cu expresia regulii.)
/old/page.jsp?type=glass&id=material
(Ordonarea parametrilor şirului de interogare trebuie să corespundă într-o regulă „şir”.)
Exemplu de corespondenţă de caracter de înlocuire
Regulă:
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
Următoarele URL-uri ar corespunde regulii:
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
Locaţia rezultată ar fi: /new/XT1045/specs.html
Porţiunea de cale a URL-ului corespunde, deci şirul de interogare este, de asemenea, examinat pentru identificarea de condiţii care corespund.
Întâmplător, parametrii din acest exemplu corespund ordonării parametrilor din expresia regulii, dar acest lucru nu este obligatoriu.
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
Locaţia rezultată ar fi: /new/XT1045/specs.html
Porţiunea de cale a URL-ului corespunde expresiei regulii de dinainte de semnul întrebării (?
) şi deci parametrii sunt de asemenea verificaţi pentru a se identifica o corespondenţă.
Deşi parametrii sunt listaţi într-o ordine diferită în expresia regulii, corespondenţa acestora este stabilită individual.
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
Locaţia rezultată ar fi: /new/XT1045/specs.html
Porţiunea de cale a URL-ului corespunde, deci şirul de interogare este, de asemenea, examinat pentru identificarea de condiţii care corespund.
URL-ul candidat are un parametru suplimentar &unrelated=thing
, însă, deoarece parametrii de interogare numiţi din expresia regulii corespund, se consideră că regula corespunde.
Parametrul necorelat
ar fi disponibil în locaţie ca token, respectiv ca <$unrelated$>
(necorelat), şi ar avea valoarea thing
(lucru), deşi nu a contribuit la corespondenţa regulii.
Următoarele URL-uri nu ar corespunde:
/old/pages/info.jsp
(Porţiunea de cale a URL-ului nu corespunde porţiunii de cale a expresiei regulii.)
/old/phones/android/pages/info.asp
(Porţiunea de cale a URL-ului corespunde porţiunii de cale a expresiei regulii, dar parametrii de interogare din expresia regulii nu corespund.)
/old/phones/android/pages/info.asp?id=cellular
(Porţiunea de cale a URL-ului corespunde porţiunii de cale a expresiei regulii, dar nu toţi parametrii de interogare din expresia regulii corespund.)
Definirea unei matrice de tokenuri
De asemenea, puteţi crea o serie de definiţii pentru tokenuri în cadrul fişierului redirects.json
, pentru a vă asista la configurarea redirecţionărilor care acceptă mai multe adrese URL ostentative. Acest lucru vă permite să faceţi în mod adecvat redirecţionarea, în funcţie de caracteristicile adresei URL primite.
Utilizaţi următorul format în fişierul redirects.json
, pentru a defini tokenurile de utilizat în adresele URL cu reguli de redirecţionare.
{ "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" }, ] }
Matricea tokenDefinitions are următoarele proprietăţi:
"token"
: Numele tokenului care va fi definit.
"type"
:Unul dintre următoarele tipuri:
"hostmatch"
pentru a face asocierea cu valoarea gazdei din adresa URL primită.
"pathmatch"
pentru a face asocierea cu valoarea numelui de cale din adresa URL primită.
"querymatch"
pentru a face asocierea cu valoarea interogării din adresa URL primită.
"expression"
: Expresia care trebuie utilizată pentru asociere. Sunt acceptate caracterele de înlocuire.
"value"
: Valoarea care trebuie utilizată pentru token.
"flags"
:În mod prestabilit, asocierea în cadrul expresiei face distincţia între litere mari şi mici, cu excepţia cazului în care valoarea flags
este setată la caseinsensitive
Atunci când se face calcularea valorii unui token, matricea tokenDefinitions
va fi enumerată în ordine. Va fi utilizată prima definiţie de asociere. Dacă nicio definiţie de token nu satisface tokenul respectiv, atunci se va folosi în schimb un şir vid. Din motive de comoditate şi de performanţă, tokenurile utilizate în mod obişnuit ar trebui să fie plasate în partea de sus a listei tokenDefinitions
.
Matricea tokenDefinitions
are următoarele restricţii:
Puteţi crea până la 250 de definiţii de tokenuri.
Numele tokenului
trebuie să aibă mai puţin de 100 de caractere.
Parametrul expression
poate avea până la 10 caractere de înlocuire.
Parametrul expression
trebuie să aibă mai puţin de 1000 de caractere.
Parametrul value
trebuie să aibă mai puţin de 1000 de caractere.
Exemplu
De exemplu, este posibil să aveţi următorul fişier 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" }, ] }
În acest caz, proprietatea location
a regulii are un token <$pathPrefix$>
. Tokenul pathPrefix
este definit în secţiunea tokenDefinitions
. Dacă adresa URL primită are corespondenţă în "vanity.com", atunci valoarea pathPrefix
va fi setată la /fashion
. Acest lucru va fi utilizat în răspunsul pentru location
, având ca rezultat /fashion/about/new-privacy-policy.html
.
Să presupunem că prima adresă URL a domeniului global Vanity este http://example.com/legacy-privacy-policy.html
. Aceasta ar corespunde primei şi singurei reguli de redirecţionare.
Parametrul location
declarat pentru această regulă este <$pathPrefix$>/about/new-privacy-policy.html
. În această situaţie, tokenul <$pathPrefix$>
trebuie să fie evaluat. Pentru a face acest lucru, matricea tokenDefinitions
este enumerată pentru a găsi o corespondenţă.
Este luată în considerare prima definiţie a tokenului. Acest token
este cel dorit, astfel că este evaluat în continuare. Expresia vanity.com
nu corespunde cu example.com
al adresei URL primite, astfel că această definiţie nu satisface cerinţele şi enumerarea continuă.
În acest stadiu nu mai există definiţii pentru token, astfel că este utilizat un şir vid pentru valoarea tokenului <$pathPrefix$>
. Locaţia finală returnată pentru această redirecţionare este /about/new-privacy-policy.html
.
Să presupunem că a doua adresă URL a domeniului global Vanity este http://vanity.com/legacy-privacy-policy.html
. Ca şi la prima adresă URL, valoarea location
declarată pentru această regulă este <$pathPrefix$>/about/new-privacy-policy.html
. În această situaţie, tokenul <$pathPrefix$>
trebuie să fie evaluat. Pentru a face acest lucru, matricea tokenDefinitions
este enumerată pentru a găsi o corespondenţă.
Este luată în considerare prima definiţie a tokenului. Ca şi mai înainte, acest token
este cel dorit, astfel că este evaluat în continuare. Expresia vanity.com
nu corespunde cu vanity.com
al adresei URL primite, astfel că această definiţie nu satisface cerinţele şi valoarea /fashion
este utilizată ca valoare a tokenului.
Deoarece a fost găsită o corespondenţă pentru token, enumerarea în matricea definiţiilor tokenului se opreşte, iar locaţia finală este calculată ca /fashion/about/new-privacy-policy.html
.
Testarea redirecţionărilor pentru site-uri
Puteţi testa redirecţionările site-ului atunci când editaţi un site prin deschiderea panoului Setări şi făcând clic pe Redirecţionări. Introduceţi o adresă URL de testat şi faceţi clic pe Testare.