Omleidingsregels opgeven in een JSON-bestand

U kunt omleidingsregels voor URL's opgeven in een JSON-bestand.

Gebruik de volgende indeling in een JSON-bestand om omleidingsregels voor URL's op te geven.

{
         "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
                }
        ]
} 

De buitenste omvattende structuur in het JSON-bestand is een array. De array bevat regelinstances.

De "string"-regels worden als eerste geëvalueerd, gevolgd door de "wildcard"-regels, op volgorde. Zodra een van de regels overeenkomt, wordt de evaluatie van volgende regels gestaakt en wordt de bijbehorende omleiding gegenereerd.

Elke regel heeft de volgende eigenschappen:

  • De eigenschap "comment" is een optionele string die niet van invloed is op de evaluatie van de regels. Deze bevat notities of commentaar.

  • De eigenschap expression is een vereiste string die wordt gematcht met de inkomende relatieve URL. In een jokertekenregel komt het asterisktoken (*) overeen met nul of meer tekens.

  • De eigenschap "location" is een vereiste string waarmee de locatie of bestemming van de omleiding wordt aangegeven. De omleiding kan een volledige of relatieve URL zijn.

  • De eigenschap "code" is een optioneel geheel getal waarmee de HTTP-responscode wordt opgegeven die moet worden gebruikt bij geven van een opdracht voor een omleiding. De waarde moet een van de volgende gehele getallen zijn:

    • 301: hiermee wordt aangegeven dat de resource permanent is verplaatst. Dit is de standaardwaarde als de eigenschap "code" wordt weggelaten.

    • 302: hiermee wordt aangegeven dat de resource tijdelijk is verplaatst.

  • De eigenschap "type" is een optionele string waarmee het type omleidingsregel wordt aangegeven. De waarde moet een van de volgende strings zijn:

    • Met "string" wordt een snellere regel aangegeven waarvan de uitdrukking exact overeenkomt met de gehele invoer-URL.

    • Met "wildcard" wordt een jokertekenregel opgegeven die kan overeenkomen met een aantal URL's. Dit is de standaardwaarde als de eigenschap wordt weggelaten.

Locatietokens

U kunt locatietokens gebruiken bij het maken van een omleidingslocatie. Elk van de volgende locatietokens kan een omleiding helpen specificeren:

  • <$urlPath$>: het padgedeelte van de overeenkomende URL

  • <$urlQueryString$>: de hele URL-zoekvraagstring van de overeenkomende URL

  • <$urlQueryStringExcept(name1,name2)$>: de hele URL-zoekvraagstring van de overeenkomende URL exclusief de benoemde parameters

  • <$wildcard(N)$>: de op één gebaseerde index van het overeenkomende jokerteken in de overeenkomende URL. (Dit is gelijk aan \1..\9 in reguliere uitdrukkingen.)

  • <$name$>: de waarde van de benoemde zoekvraagstringparameter Als u bijvoorbeeld de zoekvraagstring msmith: ?page=42 in de invoer hebt, kunt u <$page$> in de locatie gebruiken om '42' in de locatie te plaatsen.

Beperkingen

De volgende beperkingen zijn van toepassing op het bestand redirects.json als geheel en op de regels die het bestand bevat:

  • De maximale totale bestandsgrootte die wordt geaccepteerd door Oracle Content Management is 250 kB.

  • Het maximum aantal regels in het bestand redirects.json is 1000.

  • De maximale "expression"-lengte voor een regel is 1000 tekens.

  • De maximale "location"-lengte voor een regel is 2000 tekens.

  • Het maximum aantal '*'-tokens in een jokertekenregeluitdrukking is 10.

Voorbeeld van stringmatching

Regel:

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

De volgende URL komt overeen met de regel:

/old/page.jsp?id=material&type=glass
  • De resulterende locatie is dan: /new/material.htm

  • De hele URL komt overeen, inclusief de zoekvraagstring.

  • Hoewel <$id$> wordt gebruikt in de locatie, is het niet nodig voor dit voorbeeld omdat slechts één mogelijke zoekvraagstring kan overeenkomen. De locatie kan worden geschreven als /new/material.htm.

De volgende URL's komen niet overeen met de regel:

  • /old/page.jsp

    (De uitdrukking van de regel levert een zoekvraagstring op die overeen moet komen.)

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

    (De extra &index=2 in de kandidaat-URL komt niet exact overeen met de regeluitdrukking.)

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

    (De volgorde van zoekvraagstringparameters moet overeenkomen in een "string"-regel.)

Voorbeeld van jokertekenmatching

Regel:

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

De volgende URL's komen overeen met de regel:

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

    • De resulterende locatie is dan: /new/XT1045/specs.html

    • Het padgedeelte van de URL komt overeen, dus de zoekvraagstring wordt ook onderzocht op overeenkomende voorwaarden.

    • De parameters in dit voorbeeld komen toevallig overeen met de volgorde van de parameters in de regeluitdrukking, maar dit is niet vereist.

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

    • De resulterende locatie is dan: /new/XT1045/specs.html

    • Het padgedeelte van de URL komt overeen met de regeluitdrukking vóór het vraagteken (?), dus er wordt ook gecontroleerd of de parameters overeenkomen.

    • Hoewel de parameters in een andere volgorde in de regeluitdrukking worden weergegeven, worden de parameters afzonderlijk gematcht.

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

    • De resulterende locatie is dan: /new/XT1045/specs.html

    • Het padgedeelte van de URL komt overeen, dus de zoekvraagstring wordt ook onderzocht op overeenkomende voorwaarden.

    • De kandidaat-URL heeft een extra &unrelated=thing-parameter, maar omdat de benoemde zoekvraagparameters in de regeluitdrukking overeenkomen, wordt de regel als overeenkomend beschouwd.

    • De unrelated-parameter is beschikbaar in de locatie als een token, als <$unrelated$>, en heeft de waarde thing, hoewel deze niet heeft bijgedragen aan het overeenkomen met de regel.

De volgende URL's komen niet overeen:

  • /old/pages/info.jsp

    (Het padgedeelte van de URL komt niet overeen met het padgedeelte van de regeluitdrukking.)

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

    (Het padgedeelte van de URL komt overeen met het padgedeelte van de regeluitdrukking, maar de zoekvraagparameters in de regeluitdrukking komen niet overeen.)

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

    (Het padgedeelte van de URL komt overeen met het padgedeelte van de regeluitdrukking, maar niet alle zoekvraagparameters in de regeluitdrukking komen overeen.)

Een tokenarray definiëren

U kunt ook een array van tokendefinities maken in het bestand redirects.json. Dit helpt u bij het configureren van omleidingen die meerdere aangepaste URL's ondersteunen. Hierdoor kunt u op basis van de kenmerken van de inkomende URL de juiste omleidingen instellen.

Gebruik de volgende indeling in het bestand redirects.json om tokens te definiëren die in URL's met omleidingsregels moeten worden gebruikt.

{
         "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"
                },              
        ]
}

De tokenDefinitions hebben de volgende eigenschappen:

  • "token": de naam van het te definiëren token.

  • "type": een van de onderstaande opties:

    • "hostmatch" moet overeenkomen met de hostwaarde van de inkomende URL.

    • "pathmatch" moet overeenkomen met de waarde van de padnaam van de inkomende URL.

    • "querymatch" moet overeenkomen met de zoekvraagwaarde van de inkomende URL.

  • "expression": de expressie die moet worden gebruikt voor matching. Jokertekens worden ondersteund.

  • "value": de waarde die voor het token moet worden gebruikt.

  • "flags": standaard is het matchen van expressies hoofdlettergevoelig, tenzij de waarde van flags is ingesteld als caseinsensitive.

Bij het berekenen van de waarde van een token wordt de array tokenDefinitions in volgorde genummerd. De eerste overeenkomende definitie wordt gebruikt. Als geen enkele tokendefinitie voldoet aan het token, wordt er een lege string gebruikt. Ter bevordering van de efficiëntie en de prestaties moeten veelgebruikte tokens bovenaan de lijst met tokenDefinitions worden geplaatst.

De tokenDefinitions hebben de volgende beperkingen:

  • U kunt maximaal 250 tokendefinities maken.

  • De naam van token moet uit minder dan 100 tokens bestaan.

  • De expression mag maximaal 10 jokertekens bevatten.

  • De expression moet minder dan 1000 tekens bevatten.

  • De value moet minder dan 1000 tekens bevatten.

Voorbeeld

U hebt bijvoorbeeld het onderstaande bestand 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"
                },                                              
        ]
}

In dit geval bevat de eigenschap location het token <$pathPrefix$>. Het token pathPrefix is gedefinieerd in de sectie tokenDefinitions. Als de inkomende URL overeenkomt met 'vanity.com', wordt de waarde van pathPrefix ingesteld op /fashion. Dit wordt gebruikt in de respons location, wat resulteert in /fashion/about/new-privacy-policy.html.

Stel dat de URL van het eerste vanity-domein http://example.com/legacy-privacy-policy.html is. Dit komt overeen met de eerste en enige omleidingsregel.

De weergegeven location voor deze regel is <$pathPrefix$>/about/new-privacy-policy.html. In deze situatie moet het token <$pathPrefix$> worden geëvalueerd. Daarom wordt de array tokenDefinitions op nummervolgorde gezet om een match te vinden.

De eerste tokendefinitie wordt bekeken. Het token hiervan klopt, dus wordt het verder geëvalueerd. De uitdrukking vanity.com komt niet overeen met example.com van de inkomende URL, dus deze definitie voldoet niet aan de vereisten. Door naar het volgende nummer.

Op dit punt zijn er geen tokendefinities meer, dus wordt de lege string gebruikt voor de waarde van het token <$pathPrefix$>. De definitieve locatie die wordt gegeven voor deze omleiding is /about/new-privacy-policy.html.

Stel dat de URL van het tweede vanity-domein http://vanity.com/legacy-privacy-policy.html is. Net als bij de eerste URL is de weergegeven location voor deze regel <$pathPrefix$>/about/new-privacy-policy.html. In deze situatie moet het token <$pathPrefix$> worden geëvalueerd. Daarom wordt de array tokenDefinitions op nummervolgorde gezet om een match te vinden.

De eerste tokendefinitie wordt bekeken. Net als in de situatie hiervoor is het token daarvan het juiste, dus wordt het verder geëvalueerd. De uitdrukking vanity.com komt overeen met vanity.com van de inkomende URL, dus deze definitie voldoet aan de vereisten. De waarde /fashion wordt gebruikt als de waarde van het token.

Aangezien er nu een match is gevonden voor het token, wordt het op nummervolgorde zetten van de array met tokendefinities gestopt. De definitieve locatie wordt berekend als /fashion/about/new-privacy-policy.html.

Site-omleidingen testen

U kunt site-omleidingen testen wanneer u een site bewerkt. Open hiervoor het paneel Instellingen en klik op Omleidingen. Voer een URL in die u wilt testen en klik op Testen.

Testscherm 'Omleidingen'