JSON Dosyasında Yönlendirme Kuralları Belirleme

Bir JSON dosyasında URL'ler için yönlendirme kuralları belirleyebilirsiniz.

URL'ler için yönlendirme kuralları belirlemek üzere bir JSON dosyasında aşağıdaki formatı kullanın.

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

JSON dosyasındaki dış kapsayan yapı bir dizidir. Dizi, kural anlarını içerir.

Önce "string" kuralları ve ardından "wildcard" kuralları değerlendirilir. Kuralların biri eşleştikten sonra, sonraki kuralların değerlendirilmesinden vazgeçilir ve ilgili yönlendirme oluşturulur.

Her kural şu niteliklere sahiptir:

  • "comment" niteliği, kuralların değerlendirilmesine etki etmeyen isteğe bağlı bir dizedir. Not veya açıklama içerir.

  • "expression" niteliği, gelen site ile ilgili URL ile eşleşen gerekli bir dizedir. Joker karakter kurallarında yıldız işareti (*) belirteci sıfır veya daha fazla karakterle eşleşir.

  • "location" niteliği, yönlendirmenin konumunu veya hedefini belirten gerekli bir dizedir. Yönlendirme tam veya görece URL olabilir.

  • "code" niteliği, yönlendirme yayınlanırken kullanılacak HTTP yanıt kodunu sağlayan isteğe bağlı bir tamsayıdır. Değer şu tamsayılardan biri olmalıdır:

    • 301: Kaynağın kalıcı olarak taşındığını belirtir. Bu, "code" niteliği atlanırsa öndeğerdir.

    • 302: Kaynağın geçici olarak taşındığını belirtir.

  • "type” niteliği, yönlendirme kuralının tipini belirten isteğe bağlı bir dizedir. Değer şu dizelerden biri olmalıdır:

    • "string", ifadesi girilen URL ile tam olarak eşleşen daha hızlı bir kural belirler.

    • "wildcard" birden fazla URL ile eşleşebilen bir joker karakter kuralı belirler. Bu, nitelik atlanırsa öndeğerdir.

Konum Belirteçleri

Bir yönlendirme konumu üretmeye yardımcı olmak için konum belirteçlerini kullanabilirsiniz. Şu konum belirteçlerinin her biri, bir yönlendirme belirlemeye yardımcı olabilir:

  • <$urlPath$>: Eşleşen URL'nin dizin yolu kısmı.

  • <$urlQueryString$>: Eşleşen URL'nin URL sorgu dizesinin tamamı.

  • <$urlQueryStringExcept(name1,name2)$>: Eşleşen URL'nin URL sorgu dizesinin tamamı eksi adlandırılmış parametreler.

  • <$wildcard(N)$>: Eşleşen URL'deki eşleşen joker karakterin bir tabanlı dizini. (Bu, düzenli ifadelerde şuna benzer: \1..\9.)

  • <$name$>: Adlandırılmış sorgu dizesi parametresinin değeridir. Örneğin, girdide msmith: ?page=42 sorgu dizesi varsa konumda <$page$> kullanarak '42' sayısını konuma yerleştirebilirsiniz.

Kısıtlamalar

Bütün olarak redirects.json dosyası ve dosyanın içerdiği kurallar için şu kısıtlamalar geçerlidir:

  • Oracle Content Management tarafından kabul edilen maksimum genel dosya boyutu 250 KB'tır.

  • redirects.json dosyasındaki maksimum kural sayısı 1.000'dir.

  • Bir kural için maksimum "expression" uzunluğu 1.000 karakterdir.

  • Bir kural için maksimum "location" uzunluğu 2.000 karakterdir.

  • Bir joker karakter kuralı ifadesindeki maksimum '*' belirteci sayısı 10'dur.

Dize Eşleştirme Örneği

Kural:

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

Şu URL kuralla eşleşir:

/old/page.jsp?id=material&type=glass
  • Sonuçta oluşan konum: /new/material.htm

  • Sorgu dizesi dahil olmak üzere URL'nin tamamı eşleşir.

  • <$id$> konumda kullanılsa da, sadece bir olası sorgu dizesi eşleşebileceğinden bu örnek için gerekli değildir. Konum /new/material.htm olarak yazılabilir.

Şu URL'ler kuralla eşleşmez:

  • /old/page.jsp

    (Kuralın ifadesi, eşleşmesi gereken bir sorgu dizesi sağlıyor.)

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

    (Aday URL'sindeki ek &index=2, kural ifadesiyle tam olarak eşleşmiyor.)

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

    (Sorgu dizesi parametrelerinin sıralaması bir "dize" kuralında eşleşmelidir.)

Joker Karakter Eşleştirme Örneği

Kural:

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

Şu URL'ler kuralla eşleşir:

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

    • Sonuçta oluşan konum: /new/XT1045/specs.html

    • URL'nin dizin yolu kısmı eşleşiyor, dolayısıyla sorgu dizesi de eşleştirme koşulları için incelenir.

    • Bu örnekteki parametreler kural ifadesindeki parametrelerin sırasıyla eşleşiyor, ancak bu gerekli değildir.

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

    • Sonuçta oluşan konum: /new/XT1045/specs.html

    • URL'nin dizin yolu kısmı soru işaretinden (?) önce kural ifadesiyle eşleşiyor, dolayısıyla parametreler de eşleşme için kontrol edilir.

    • Kural ifadesinde parametreler farklı bir sırada listelense de, parametreler ayrı olarak eşleşiyor.

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

    • Sonuçta oluşan konum: /new/XT1045/specs.html

    • URL'nin dizin yolu kısmı eşleşiyor, dolayısıyla sorgu dizesi de eşleştirme koşulları için incelenir.

    • Aday URL'sinde ek bir &unrelated=thing parametresi var, ancak kural ifadesindeki adlandırılmış sorgu parametreleri eşleştiğinden kuralın eşleştiği kabul edilir.

    • unrelated parametresi, kuralın eşleşmesine katkı sağlamasa da konumda bir belirteç olarak var olur (<$unrelated$> olarak) ve thing değerine sahip olur.

Şu URL'ler eşleşmez:

  • /old/pages/info.jsp

    (URL'nin dizin yolu kısmı, kural ifadesinin dizin yolu kısmıyla eşleşmiyor.)

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

    (URL'nin dizin yolu kısmı, kural ifadesinin dizin yolu kısmıyla eşleşiyor, ancak kural ifadesindeki sorgu parametreleri eşleşmiyor.)

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

    (URL'nin dizin yolu kısmı, kural ifadesinin dizin yolu kısmıyla eşleşiyor, ancak kural ifadesindeki sorgu parametrelerinin hepsi eşleşmiyor.)

Belirteç Dizisi Tanımlama

Birden fazla özel URL'yi destekleyen yeniden yönlendirmeler konfigüre edilirken yardımcı olması için redirects.json dosyasında belirteç tanımı dizisi de oluşturabilirsiniz. Bu, gelen URL'nin özelliklerini esas alarak uygun biçimde yeniden yönlendirmenizi sağlar.

Yeniden yönlendirme kuralı URL'lerinde kullanmak için belirteç tanımlamak üzere redirects.json dosyasındaki şu formatı kullanın.

{
         "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 şu niteliklere sahiptir:

  • "token": Tanımlanacak belirtecin adı.

  • "type": Şunlardan biri:

    • "hostmatch" gelen URL'nin ana bilgisayar değeri ile eşleşmesi için.

    • "pathmatch" gelen URL'nin dizin yolu adı ile eşleşmesi için.

    • "querymatch" gelen URL'nin sorgu değeri ile eşleşmesi için.

  • "expression": Eşleştirme için kullanılması gereken ifade. Joker karakterler desteklenir.

  • "value": Belirteç için kullanılması gereken değer.

  • "flags": Öndeğer olarak flags değeri caseinsensitive olarak ayarlanmadıkça ifade eşleştirme büyük küçük harfe duyarlıdır

Bir belirtecin değeri hesaplanırken tokenDefinitions dizisi sıralı olarak numaralandırılır. İlk eşleşen tanım kullanılır. Belirteci karşılayan belirteç tanımı yoksa bunun yerine boş bir dize kullanılır. Uygunluk ve performans için, sık kullanılan belirteçler tokenDefinitions listesinin en üstüne yerleştirilmelidir.

tokenDefinitions şu kısıtlamalara sahiptir:

  • En fazla 250 belirteç tanımı oluşturabilirsiniz.

  • token adı 100 karakterden kısa olmalıdır.

  • expression en fazla 10 joker karakter içerebilir.

  • expression 1000 karakterden kısa olmalıdır.

  • value 1000 karakterden kısa olmalıdır.

Örnek

Örneğin, şu redirects.json dosyasına sahip olabilirsiniz:

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

Bu durumda, kuralın location niteliği bir <$pathPrefix$> belirtecine sahiptir. pathPrefix belirteci tokenDefinitions bölümünde tanımlıdır. Gelen URL "vanity.com" ile eşleşirse pathPrefix değeri /fashion olarak ayarlanır. Bu, location yanıtında kullanılır ve /fashion/about/new-privacy-policy.html olarak sonuçlanır.

İlk özel etki alanı URL'sinin http://example.com/legacy-privacy-policy.html olduğunu varsayalım. Bu ilk ve tek tekrar yönlendirme kuralı ile eşleşir.

Bu kurala ilişkin belirtilen location: <$pathPrefix$>/about/new-privacy-policy.html. Bu durumda, <$pathPrefix$> belirtecinin değerlendirilmesi gerekir. Bunu yapabilmek için tokenDefinitions dizisi bir eşleşme bulmak üzere numaralandırılır.

İlk belirteç tanımı değerlendirilir. Onun token değeri istenen belirteçtir, bu nedenle daha fazla değerlendirilir. vanity.com ifadesi gelen URL'nin example.com ifadesi ile eşleşmiyor, bu nedenle bu tanım gereksinimleri karşılamaz ve numaralandırma devam eder.

Bu noktada daha fazla belirteç tanımı bulunmaz, bu nedenle <$pathPrefix$> belirtecinin değeri için boş dize kullanılır. Bu yeniden yönlendirme için döndürülen son konum: /about/new-privacy-policy.html.

İkinci özel etki alanı URL'nin http://vanity.com/legacy-privacy-policy.html olduğunu varsayalım. İlk URL'deki gibi bu kurala ilişkin belirtilen konum: <$pathPrefix$>/about/new-privacy-policy.html. Bu durumda, <$pathPrefix$> belirtecinin değerlendirilmesi gerekir. Bunu yapabilmek için tokenDefinitions dizisi bir eşleşme bulmak üzere numaralandırılır.

İlk belirteç tanımı değerlendirilir. Daha önce olduğu gibi onun token değeri istenen belirteçtir, bu nedenle daha fazla değerlendirilir. vanity.com ifadesi gelen URL'nin vanity.com ifadesi ile eşleşmiyor, bu nedenle bu tanım gereksinimleri karşılamıyor ve /fashion değeri belirteç değeri olarak kullanılır.

Belirtece ilişkin bir eşleştirme bulunduğu için belirteç tanımları dizisinin numaralandırılması durur ve son konum /fashion/about/new-privacy-policy.html olarak hesaplanır.

Site Yeniden Yönlendirmelerini Test Etme

Ayarlar panelini açarak ve Yeniden Yönlendirmeler'e tıklayarak bir site düzenlenirken site yeniden yönlendirmelerini test edebilirsiniz. Test etmek üzere bir URL girin ve Test Et'e tıklayın.

Test Panelini Yeniden Yönlendirir