Ange omdirigeringsregler i en JSON-fil

Du kan ange omdirigeringsregler för URL:er i en JSON-fil.

Använd följande format i en JSON-fil för att ange omdirigeringsregler för 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 yttre inneslutande strukturen i JSON-filen är en uppställning. Uppställningen innehåller regelinstanser.

Reglerna "string" utvärderas först, följda av reglerna "wildcard", i angiven ordning. När någon av reglerna matchar överges utvärderingen av efterföljande regler, och motsvarande omdirigering genereras.

Varje regel har följande egenskaper:

  • Egenskapen "comment" är en valfri sträng som inte har någon effekt på utvärderingen av reglerna. Den inkluderar anteckningar eller kommentarer.

  • Egenskapen "expression" är en obligatorisk sträng som matchas mot den inkommande webbplatsrelativa URL:en. I en regel med jokertecken matchar asterisktoken (*) noll eller flera tecken.

  • Egenskapen "location" är en obligatorisk sträng som anger platsen eller destinationen för omdirigeringen. Omdirigeringen kan göras med en fullständig eller relativ URL.

  • Egenskapen "code" är ett valfritt heltal som anger den HTTP-svarskod som ska användas när omdirigeringen skickas. Värdet måste vara något av följande heltal:

    • 301: Anger att resursen har flyttats permanent. Det här är standardvärdet om egenskapen "code" utelämnas.

    • 302: Anger att resursen har flyttats tillfälligt.

  • Egenskapen "type" är en valfri sträng som anger typen av omdirigeringsregel. Värdet måste vara någon av följande strängar:

    • "string" anger en snabbare regel vars uttryck matchar hela den inmatade URL:en exakt.

    • "wildcard" anger en regel med jokertecken som kan matcha ett antal URL:er. Det här är standardvärdet om egenskapen utelämnas.

Platstoken

Du kan använda platstoken som hjälp för att tillverka en omdirigeringsplats. Vart och ett av följande platstoken kan bidra till att ange en omdirigering:

  • <$urlPath$>: Sökvägsdelen av den matchande URL:en.

  • <$urlQueryString$>: Hela URL-frågesträngen från den matchande URL:en.

  • <$urlQueryStringExcept(name1,name2)$>: Hela URL-frågesträngen från den matchande URL:en minus de namngivna parametrarna.

  • <$wildcard(N)$>: Det ett-baserade indexet för matchande jokertecken i den matchande URL:en. (Det här är analogt med \1..\9 i reguljära uttryck.)

  • <$name$>: Värdet för den namngivna frågesträngsparametern. Om du till exempel har frågesträngen msmith: ?page=42 vid inmatning så kan du sedan använda <$page$> på platsen för att placera '42' på platsen.

Restriktioner

Följande restriktioner gäller för filen redirects.json i sin helhet och för reglerna den innehåller:

  • Den maximala övergripande filstorlek som accepteras av Oracle Content Management är 250 kilobyte.

  • Det maximala antalet regler i filen redirects.json är 1 000.

  • Den maximala längden på "expression" för en regel är 1 000 tecken.

  • Den maximala längden på "location" för en regel är 2 000 tecken.

  • Det högsta antalet '*'-token i ett regeluttryck med jokertecken är 10.

Exempel på strängmatchning

Regel:

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

Följande URL skulle matcha regeln:

/old/page.jsp?id=material&type=glass
  • Den resulterande platsen skulle bli: /new/material.htm

  • Hela URL:en matchar, inklusive frågesträngen.

  • Även om <$id$> används på platsen är det inte nödvändigt för det här exemplet, eftersom endast en möjlig frågesträng skulle kunna matcha. Platsen skulle ha kunnat skrivas som /new/material.htm.

Följande URL:er skulle inte matcha regeln:

  • /old/page.jsp

    (Regelns uttryck ger en frågesträng som måste matcha.)

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

    (Det extra &index=2 i kandidat-URL:en matchar inte regeluttrycket exakt.)

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

    (Ordningen på frågesträngparametrarna måste matcha i en "sträng"-regel.)

Exempel på matchning med jokertecken

Regel:

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

Följande URL:er skulle matcha regeln:

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

    • Den resulterande platsen skulle bli: /new/XT1045/specs.html

    • Sökvägsdelen av URL:en matchar, så frågesträngen granskas även avseende matchningsvillkor.

    • Parametrarna i det här exemplet råkar matcha ordningen på parametrarna i regeluttrycket, men det här är inget krav.

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

    • Den resulterande platsen skulle bli: /new/XT1045/specs.html

    • Sökvägsdelen av URL:en matchar regeluttrycket före frågetecknet (?), så parametrarna kontrolleras också avseende matchning.

    • Även om parametrarna listas i en annan ordning i regeluttrycket, matchar parametrarna individuellt.

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

    • Den resulterande platsen skulle bli: /new/XT1045/specs.html

    • Sökvägsdelen av URL:en matchar, så frågesträngen granskas även avseende matchningsvillkor.

    • Kandidat-URL:en har en extra &unrelated=thing-parameter, men eftersom de namngivna frågeparametrarna i regeluttrycket matchar, bedöms regeln matcha.

    • Parametern unrelated skulle vara tillgänglig på platsen som ett token, som <$unrelated$>, och skulle ha värdet thing, även om den inte skulle bidra till regelns matchning.

Följande URL:er skulle inte matcha:

  • /old/pages/info.jsp

    (Sökvägsdelen av URL:en matchar inte sökvägsdelen av regeluttrycket.)

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

    (Sökvägsdelen av URL:en matchar sökvägsdelen av regeluttrycket, men frågeparametrarna i regeluttrycket matchar inte.)

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

    (Sökvägsdelen av URL:en matchar sökvägsdelen av regeluttrycket, men det är inte alla frågeparametrar i regeluttrycket som matchar.)

Definiera en tokenuppställning

Du kan också skapa en uppställning med tokendefinitioner i filen redirects.json som du kan ta hjälp av när du konfigurerar omdirigeringar som har stöd för flera personliga webbadresser. Det gör att du kan omdirigera på rätt sätt baserat på egenskaperna för den inkommande URL:en.

Använd följande format i filen redirects.json för att definiera token som ska användas i URL:er för 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öljande egenskaper:

  • "token": namnet på det token som ska definieras.

  • "type": en av följande:

    • "hostmatch" för matchning med den inkommande URL:ens värde för värd.

    • "pathmatch" för matchning med den inkommande URL:ens värde för sökvägsnamn.

    • "querymatch" för matchning med den inkommande URL:ens värde för fråga.

  • "expression": det uttryck som ska användas för matchningen. Jokertecken kan användas.

  • "value": det värde som ska användas för token.

  • "flags": uttrycksmatchningen är som standard skiftlägeskänslig såvida inte värdet för flags är inställt på caseinsensitive

Vid beräkning av värdet för ett token räknas uppställningen tokenDefinitions upp i ordning. Den första matchande definitionen används. Om inga tokendefinitioner matchar detta token används en tom sträng istället. För effektivitet och prestanda placerar du token som används ofta upp högst i listan tokenDefinitions.

Följande begränsningar gäller för tokenDefinitions:

  • Du kan skapa upp till 250 tokendefinitioner.

  • Namnet på ett token får bestå av högst 100 tecken.

  • expression kan ha upp till tio jokertecken.

  • expression får bestå av högst 1 000 tecken.

  • value får bestå av högst 1 000 tecken.

Exempel

Du kan till exempel ha följande 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 det här fallet har regelns egenskap location ett <$pathPrefix$>-token. Token pathPrefix är definierat i sektionen tokenDefinitions. Om den inkommande URL:en matchar "vanity.com" ställs värdet för pathPrefix in på /fashion. Det används i svaret location vilket ger /fashion/about/new-privacy-policy.html.

Säg att den första personliga webbadressen för domänen är http://example.com/legacy-privacy-policy.html. Detta bör matcha den första och enda omdirigeringsregeln.

Deklarerad location för regeln är <$pathPrefix$>/about/new-privacy-policy.html. I den här situationen måste token <$pathPrefix$> utvärderas. För att kunna göra det räknas uppställningen tokenDefinitions upp för att hitta en matchning.

Den första tokendefinitionen övervägs. Dess token är det vi söker efter och utvärderas därför vidare. Uttrycket vanity.com matchar inte den inkommande URL:ens example.com så den här definitionen uppfyller inte kraven och uppräkningen fortsätter.

I det här läget finns det inte fler tokendefinitioner så den tomma strängen används som värde för token <$pathPrefix$>. Den slutliga platsen som returneras för den här omdirigeringen är /about/new-privacy-policy.html.

Säg att den andra personliga webbadressen för domänen är http://vanity.com/legacy-privacy-policy.html. Som för den första URL:en är deklarerad location för regeln <$pathPrefix$>/about/new-privacy-policy.html. I den här situationen måste token <$pathPrefix$> utvärderas. För att kunna göra det räknas uppställningen tokenDefinitions upp för att hitta en matchning.

Den första tokendefinitionen övervägs. Som tidigare är dess token det vi söker efter och utvärderas därför vidare. Uttrycket vanity.com matchar den inkommande URL:ens vanity.com så den här definitionen uppfyller kraven och värdet /fashion används som värde för token.

I och med att en matchning för token hittades avslutas uppräkningen av tokendefinitionsuppställningen och den slutliga platsen beräknas till /fashion/about/new-privacy-policy.html.

Testa webbplatsomdirigeringar

Du kan testa webbplatsomdirigeringar när du redigerar en webbplats genom att öppna panelen Inställningar och klicka på Omdirigeringar. Ange en URL som ska testas och klicka på Testa.

Testpanel för omdirigeringar