Angi omdirigeringsregler i en JSON-fil

Du kan angi omdirigeringsregler for URL-adresser i en JSON-fil.

Bruk følgende format i en JSON-fil til å angi omdirigeringsregler for URL-adresser.

{
         "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 ytre innholdsstrukturen i JSON-filen er en matrise. Matrisen inneholder regelforekomster.

Først evalueres string-reglene, fulgt av wildcard-reglene, i ordnet rekkefølge. Når én av reglene samsvarer, avbrytes evalueringen av påfølgende regler, og den tilsvarende omdirigeringen genereres.

Hver regel har følgende egenskaper:

  • Egenskapen comment er en valgfri streng som ikke påvirker evalueringen av reglene. Den omfatter merknader eller en kommentar.

  • Egenskapen expression er en obligatorisk streng som samsvarer med en innkommende områderelativ URL-adresse. I en jokertegnregel samsvarer stjernen (*) med null eller flere tegn.

  • Egenskapen location er en obligatorisk streng som angir plasseringen av eller målet for omdirigeringen. Omdirigeringen kan være en fullstendig eller relativ URL-adresse.

  • Egenskapen code er et valgfritt heltall som angir HTTP-svarkoden som skal brukes ved utstedelse av omdirigeringen. Verdien må være ett av følgende heltall:

    • 301 angir at ressursen er flyttet permanent. Dette er standardverdien hvis egenskapen code er utelatt.

    • 302 angir at ressursen er flyttet midlertidig.

  • Egenskapen type er en valgfri streng som angir typen omdirigeringsregel. Verdien må være én av følgende strenger:

    • string angir en raskere regel med et uttrykk som samsvarer direkte med hele inndata-URL-adressen.

    • wildcard angir en jokertegnregel som kan samsvare med flere URL-adresser. Dette er standardverdien hvis egenskapen er utelatt.

Plasseringssymboler

Du kan bruke plasseringssymboler som hjelp til å produsere en omdirigert plassering. Hver av følgende plasseringssymboler kan bidra til å angi en omdirigering:

  • <$urlPath$>: banedelen av den samsvarende URL-adressen.

  • <$urlQueryString$>: hele URL-spørringsstrengen fra den samsvarende URL-adressen.

  • <$urlQueryStringExcept(name1,name2)$>: hele URL-spørringsstrengen fra den samsvarende URL-adressen, minus de navngitte parametrene.

  • <$wildcard(N)$>: den én-baserte indeksen for det samsvarende jokertegnet i den samsvarende URL-adressen. (Dette er analogt med \1..\9 i regulære uttrykk.)

  • <$name$>: verdien av den navngitte spørringsstrengparameteren. Hvis du for eksempel har spørringsstrengen msmith: ?page=42 i inndataene, kan du bruke <$page$> i plasseringen til å plassere '42' i plasseringen.

Begrensninger

Følgende begrensninger gjelder for filen redirects.json som helhet og for reglene den inneholder:

  • Den største totale filstørrelsen som godtas av Oracle Content Management, er 250 kB.

  • Det maksimale antall regler i filen redirects.json er 1 000.

  • Den maksimale lengden på expression for en regel er 1 000 tegn.

  • Den maksimale lengden på location for en regel er 2 000 tegn.

  • Det maksimale antall *-symboler i et jokertegnuttrykk er 10.

Eksempel på samsvarende streng

Regel:

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

Følgende URL-adresse samsvarer med regelen:

/old/page.jsp?id=material&type=glass
  • Den resulterende plasseringen blir /new/material.htm

  • Hele URL-adressen samsvarer, inkludert spørringsstrengen.

  • Selv om <$id$> brukes i plasseringen, er det ikke nødvendig for dette eksemplet fordi bare én mulig spørringsstreng kan samsvare. Plasseringen kan være skrevet som /new/material.htm.

Følgende URL-adresser samsvarer ikke med regelen:

  • /old/page.jsp

    (Regelens uttrykk gir en spørringsstreng som må samsvare.)

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

    (Den ekstra &index=2 i kandidatens URL-adresse samsvarer ikke fullstendig med regeluttrykket.)

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

    (Rekkefølgen på parametrene i spørringsstrengen må samsvare i en string-regel.)

Eksempel på samsvarende jokertegn

Regel:

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

Følgende URL-adresser samsvarer med regelen:

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

    • Den resulterende plasseringen blir /new/XT1045/specs.html

    • Banedelen av URL-adressen samsvarer, så spørringsstrengen blir også undersøkt for samsvarende betingelser.

    • Parametrene i dette eksemplet samsvarer tilfeldigvis med rekkefølgen på parametrene i regeluttrykket, men det er ikke nødvendig.

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

    • Den resulterende plasseringen blir /new/XT1045/specs.html

    • Banedelen av URL-adressen samsvarer med regeluttrykket før spørsmålstegnet (?), så det kontrolleres også om parametrene samsvarer.

    • Selv om parametrene vises i en annen rekkefølge i regeluttrykket, sammenlignes de enkeltvis.

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

    • Den resulterende plasseringen blir /new/XT1045/specs.html

    • Banedelen av URL-adressen samsvarer, så spørringsstrengen blir også undersøkt for samsvarende betingelser.

    • Kandidat-URL-en har en ekstra &unrelated=thing-parameter, men siden de navngitte spørringsparametrene i regeluttrykket samsvarer, blir regelen bedømt som samsvarende.

    • Parameteren unrelated er tilgjengelig i plasseringen som et symbol, som <$unrelated$>, og får verdien thing, selv om den ikke bidrar til regelens samsvar.

Følgende URL-adresser samsvarer ikke:

  • /old/pages/info.jsp

    (Banedelen av URL-adressen samsvarer ikke med banedelen i regeluttrykket.)

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

    (Banedelen av URL-adressen samsvarer med banedelen av regeluttrykket, men spørringsparametrene i regeluttrykket samsvarer ikke.)

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

    (Banedelen av URL-adressen samsvarer med banedelen av regeluttrykket, men alle spørringsparametrene i regeluttrykket samsvarer ikke.)

Definere en symbolmatrise

Du kan også opprette en matrise av symboldefinisjoner i filen Redirects.json som skal være til hjelp når du konfigurerer omdirigeringer som støtter flere personlige URL-adresser. På denne måten kan du omdirigere på riktig måte basert på kjennetegnene til den innkommende URL-adressen.

Bruk følgende format i filen redirects.json hvis du vil definere symboler som skal brukes i URL-adresser 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 egenskaper:

  • "token": Navnet på symbolet som skal defineres.

  • "type": Ett av følgende:

    • "hostmatch" for samsvar med vertsverdien for den innkommende URL-adressen.

    • "pathmatch" for samsvar med banenavnverdien for den innkommende URL-adressen.

    • "querymatch" for samsvar med spørringsverdien for den innkommende URL-adressen.

  • "expression": Uttrykket som skal brukes for samsvar Jokertegn støttes.

  • "value": Verdien som skal brukes for symbolet.

  • "flags": Som standard skiller uttrykkssamsvar mellom store og små bokstaver, med mindre verdien flags er satt til caseinsensitive

Ved beregning av verdien for et symbol blir tokenDefinitions-matrisen nummerert i rekkefølge. Den første samsvarende definisjonen blir brukt. Hvis ingen symboldefinisjoner tilfredsstiller symbolet, brukes i stedet en tom streng. Det er hensiktsmessig og praktisk å plassere vanlige symboler øverst i listen tokenDefinitions.

tokenDefinitions har følgende restriksjoner:

  • Du kan opprette opptil 250 symboldefinisjoner.

  • token-navnet må være kortere enn 100 tegn.

  • expression kan ha opptil 10 jokertegn.

  • expression må være kortere enn 1000 tegn.

  • value må være kortere enn 1000 tegn.

Eksempel

Du kan for eksempel ha 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 tilfellet har regelens location-egenskap et <$pathPrefix$>-symbol. Symbolet pathPrefix er definert i delen tokenDefinitions. Hvis den innkommende URL-adressen samsvarer med "vanity.com", blir verdien pathPrefix satt til /fashion. Denne blir brukt i location-svaret, med resultatet /fashion/about/new-privacy-policy.html.

La oss anta at den første personlige URL-adressen for domenet er http://example.com/legacy-privacy-policy.html. Dette gir samsvar med den første og eneste regelen for omdirigering.

Deklarert location for denne regelen er <$pathPrefix$>/about/new-privacy-policy.html. I dette tilfellet må symbolet <$pathPrefix$> evalueres. Dette muliggjøres ved å nummerere matrisen tokenDefinitions for å finne samsvar.

Den første symboldefinisjonen vurderes. Tilhørende token er det ønskede symbolet, og derfor evalueres det ytterligere. Uttrykket vanity.com samsvarer ikke med example.com for den innkommende URL-adressen. Derfor oppfyller ikke denne definisjonen kravene, og nummereringen fortsetter.

På dette tidspunktet er det ikke flere symboldefinisjoner, og den tomme strengen brukes til verdien for <$pathPrefix$>-symbolet. Den endelige plasseringen for denne omdirigeringen er /about/new-privacy-policy.html.

La oss anta at den andre personlige URL-adressen for domenet er http://vanity.com/legacy-privacy-policy.html. I likhet med den første URL-adressen er deklarert location for denne regelen <$pathPrefix$>/about/new-privacy-policy.html. I dette tilfellet må symbolet <$pathPrefix$> evalueres. Dette muliggjøres ved å nummerere matrisen tokenDefinitions for å finne samsvar.

Den første symboldefinisjonen vurderes. Som tidligere er tilhørende token det ønskede symbolet, og derfor evalueres det ytterligere. Uttrykket vanity.com samsvarer med den innkommende URL-adressens vanity.com, og derfor oppfyller denne definisjonen kravene, og verdien /fashion brukes som symbolverdi.

Fordi det ble funnet samsvar for symbolet, stopper nummereringen av symboldefinisjonsmatrisen, og den endelige plasseringen beregnes som /fashion/about/new-privacy-policy.html.

Teste omdirigeringer for område

Du kan teste omdirigeringer for område når du redigerer et område, ved å åpne ruten Innstillinger og klikke på Omdirigeringer. Angi en URL-adresse du vil teste, og klikk på Test.

Testrute for omdirigeringer