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.