Du kan angive omdirigeringsregler for URL'er i en JSON-fil.
Brug følgende format i en JSON-fil til at angive omdirigeringsregler for URL'er.
{ "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 } ] }
Den ydre indholdsstruktur i JSON-filen er en array. Denne array indeholder regelinstanser.
Reglerne "string"
evalueres først efterfulgt af reglerne "wildcard"
i rækkefølge. Når en af reglerne matcher, annulleres evalueringen af efterfølgende regler, og den tilsvarende omdirigering genereres.
Hver regel har følgende egenskaber:
Egenskaben "comment"
er en valgfri streng, der ikke har nogen indvirkning på evalueringen af reglerne. Den indeholder noter eller kommentarer.
Egenskaben "expression"
er en påkrævet streng, der matches i forhold til den indgående site-relative URL. I en jokertegnsregel matcher stjernen (*
) nul eller flere tegn.
Egenskaben "location"
er en påkrævet streng, der angiver lokationen eller destinationen for omdirigeringen. Omdirigeringen kan være en fuld eller relativ URL.
Egenskaben "code"
er et valgfrit heltal, der angiver den HTTP-svarkode, som skal bruges ved udstedelsen af omdirigeringen. Værdien skal være et af følgende heltal:
301: Angiver, at ressourcen er flyttet permanent. Dette er standardværdien, hvis egenskaben "code"
er udeladt.
302: Angiver, at ressourcen er flyttet midlertidigt.
Egenskaben "type" er en valgfri streng, der angiver omdirigeringsreglens type. Værdien skal være en af følgende strenge:
"string"
angiver en hurtigere regel, hvis udtryk matcher hele input-URL'en præcist.
"wildcard"
angiver en jokertegnsregel, der kan matche en række URL'er. Dette er standardværdien, hvis egenskaben er udeladt.
Lokations-tokens
Du kan bruge lokations-tokens som hjælp til at oprette en omdirigeringslokation. Hver af følgende lokations-tokens kan hjælpe med at angive en omdirigering:
<$urlPath$>
: Stidelen af den matchende URL.
<$urlQueryString$>
: Hele URL-forespørgselsstrengen fra den matchende URL.
<$urlQueryStringExcept(name1,name2)$>
: Hele URL-forespørgselsstrengen fra den matchende URL minus de navngivne parametre.
<$wildcard(N)$>
: Det 1-baserede indeks for det matchende jokertegn i den matchende URL. (Det svarer til \1..\9
i almindelige udtryk).
<$name$>
: Værdien af den navngivne forespørgselsstrengparameter. Hvis du for eksempel har forespørgselsstrengen msmith: ?page=42
i inputtet, kan du bruge <$page$>
i lokationen til at placere '42'
i lokationen.
Begrænsninger
Følgende begrænsninger gælder for filen redirects.json
som helhed og de regler, som den indeholder:
Den maksimale samlede filstørrelse, som accepteres af Oracle Content Management, er 250 KB.
Det maksimale antal regler i filen redirects.json
er 1.000.
Maksimumlængden af "expression"
for en regel er 1.000 tegn.
Maksimumlængden af "location"
for en regel er 2.000 tegn.
Det maksimale antal '*'
-tokens i en jokertegnsregels udtryk er 10.
Eksempel på strengmatchning
Regel:
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
Følgende URL matcher reglen:
/old/page.jsp?id=material&type=glass
Den resulterende lokation er: /new/material.htm
Hele URL'en matcher, herunder forespørgselsstrengen.
Selvom <$id$>
bruges i lokationen, er det ikke nødvendigt i dette eksempel, fordi kun én mulig forespørgselsstreng kan matche. Lokationen kan skrives som /new/material.htm
.
Følgende URL'er matcher ikke reglen:
/old/page.jsp
Reglens udtryk resulterer i en forespørgselsstreng, der skal matche.
/old/page.jsp?id=material&type=glass&index=2
Den ekstra &index=2
i kandidat-URL'en matcher ikke regeludtrykket præcist.
/old/page.jsp?type=glass&id=material
Rækkefølgen af forespørgselsstrengens parametre skal matche i en "string"-regel.
Eksempel på jokertegnmatchning
Regel:
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
Følgende URL'er matcher reglen:
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
Den resulterende lokation er: /new/XT1045/specs.html
Stidelen af URL'en matcher, så det kontrolleres også, om der er matchende betingelser i forespørgselsstrengen.
Parametrene i dette eksempel matcher rækkefølgen af parametrene i regeludtrykket, men det er ikke påkrævet.
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
Den resulterende lokation er: /new/XT1045/specs.html
Stidelen af URL'en matcher regeludtrykket foran spørgsmålstegnet (?
), så det kontrolleres også, om der er et match i parametrene.
Selvom parametrene er angivet i en anden rækkefølge i regeludtrykket, matches parametrene individuelt.
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
Den resulterende lokation er: /new/XT1045/specs.html
Stidelen af URL'en matcher, så det kontrolleres også, om der er matchende betingelser i forespørgselsstrengen.
Kandidat-URL'en har en ekstra &unrelated=thing
-parameter, men da de navngivne forespørgselsparametre i regeludtrykket matcher, anses reglen for at matche.
Parameteren unrelated
er tilgængelig i lokationen som token, <$unrelated$>
, og har værdien thing
, selvom den ikke bidrager til matchningen af reglen.
Følgende URL'er matcher ikke:
/old/pages/info.jsp
Stidelen af URL'en matcher ikke stidelen af regeludtrykket.
/old/phones/android/pages/info.asp
Stidelen af URL'en matcher stidelen af regeludtrykket, men forespørgselsparametrene i regeludtrykket matcher ikke.
/old/phones/android/pages/info.asp?id=cellular
Stidelen af URL'en matcher stidelen af regeludtrykket, men ikke alle forespørgselsparametre i regeludtrykket matcher.
Definere et token-array
Du kan også oprette et array med token-definitioner i filen redirects.json
, som en hjælp, når du konfigurerer omdirigeringer, der understøtter flere pæne URL'er. Dette gør det muligt for dig at foretage korrekte omdirigeringer på basis af karakteristikaene for den indgående URL.
Brug følgende format i filen redirects.json
til at definere tokens til brug i URL'er for omdirigeringsregler.
{ "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" }, ] }
tokenDefinitions har følgende egenskaber:
"token"
: Navnet på det token, der skal defineres.
"type"
: En af følgende:
"hostmatch"
, der skal matche værtsværdien for den indgående URL.
"pathmatch"
, der skal matche stinavnværdien for den indgående URL.
"querymatch"
, der skal matche forespørgselsværdien for den indgående URL.
"expression"
: Det udtryk, der skal bruges til matchning. Jokertegn understøttes.
"value"
: Den værdi, der skal bruges til tokenet.
"flags"
: Der skelnes normalt mellem små og store bogstaver i udtryksmatchning, medmindre værdien for flags
er sat til caseinsensitive
Når værdien for et token beregnes, optælles tokenDefinitions
-arrayet i rækkefølge. Den første matchende definition bruges. Hvis der ikke er nogen tokendefinitioner, der matcher tokenet, bruges der i stedet en tom streng. Det er mest hensigtsmæssigt og forbedrer ydeevnen, hvis de hyppigst anvendte tokens placeres øverst på listen tokenDefinitions
.
tokenDefinitions
har følgende begrænsninger:
Du kan oprette op til 250 token-definitioner.
token
-navnet skal være på mindre end 100 tegn.
expression
kan indeholde op til 10 jokertegn.
expression
skal bestå af mindre end 1000 tegn.
value
skal bestå af mindre end 1000 tegn.
Eksempel
Du har for eksempel følgende redirects.json-fil:
{ "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" }, ] }
I dette tilfælde har reglens location
-egenskab et <$pathPrefix$>
-token. Tokenet pathPrefix
er defineret i afsnittet tokenDefinitions
. Hvis den indgående URL matcher "vanity.com", sættes værdien for pathPrefix
til /fashion
. Denne bruges i location
-svaret, hvilket resulterer i /fashion/about/new-privacy-policy.html
.
Lad os antage, at den første URL i det personlige domæne er http://example.com/legacy-privacy-policy.html
. Dette ville matche den første og eneste omdirigeringsregel.
Den erklærede location
for denne regel er <$pathPrefix$>/about/new-privacy-policy.html
. I denne situation skal tokenet <$pathPrefix$>
evalueres. I den forbindelse optælles tokenDefinitions
-arrayet for at finde et match.
Den første token-definition overvejes. Dens token
er det ønskede, og den evalueres derfor yderligere. Udtrykket vanity.com
matcher ikke den indgående URL's example.com
, så denne definition opfylder ikke kravene, og optællingen fortsætter.
Nu er der ikke flere token-definitioner, så den tomme streng bruges som værdi for tokenet <$pathPrefix$>
. Den endelige lokation, der returneres for denne omdirigering, er /about/new-privacy-policy.html
.
Lad os antage, at anden URL i det personlige domæne er http://example.com/legacy-privacy-policy.html
. Som med den første URL er den erklærede location
for denne regel <$pathPrefix$>/about/new-privacy-policy.html
. I denne situation skal tokenet <$pathPrefix$>
evalueres. I den forbindelse optælles tokenDefinitions
-arrayet for at finde et match.
Den første token-definition overvejes. Ligesom før er dens token
det ønskede, og den evalueres derfor yderligere. Udtrykket vanity.com
matcher den indgående URL's vanity.com
, så denne definition opfylder kravene, og værdien /fashion
bruges som tokenets værdi.
Da der blev fundet et match for tokenet, stopper optællingen af token-definitions-arrayet, og den endelige lokation beregnes som /fashion/about/new-privacy-policy.html
.
Teste siteomdirigeringer
Du kan teste siteomdirigeringer, når du redigerer et site, ved at åbne panelet Indstillinger og klikke på Omdirigeringer. Indtast en URL, der skal testes, og klik på Test.