Virtual Host Patterns alanında wildcard (*.example.com) kullanabilir miyim, yoksa birebir eşleşme mi aranır?
Kısa cevap
İkisi de mümkündür (Virtual Host Patterns). Desen * içermiyorsa Host header'ıyla birebir karşılaştırılır; * içeriyorsa * bulunduğu yerde boş dahil herhangi bir karakter dizisini karşılar, desenin geri kalanı birebir aranır. Karşılaştırma her zaman Host değerinin tamamı üzerinden yapılır; desen Host'un yalnızca bir parçasıyla eşleşmez. Tek joker *'dır; ?, [abc] ya da {a,b} gibi yapılar düz karakter olarak aranır. *.example.com deseni www.example.com ve a.b.example.com'u karşılar, example.com'u ve www.example.com:8443 gibi portlu Host değerlerini karşılamaz; kök alan adı ve port için ayrı desen yazılır (example.com, *.example.com:8443). Karşılaştırma büyük/küçük harfe duyarlıdır. Arayüz * işaretini desenin her yerinde kabul eder; WEB-CLI ise yalnızca baştaki *. biçimini kabul eder. Bu yüzden desenler *.example.com kalıbında yazılır.
Nasıl Çalışır?
Bir grubun desenleri, isteğin Host header'ının tamamıyla karşılaştırılır; * dışındaki her karakter (nokta, iki nokta, köşeli parantez, soru işareti) kendisiyle eşleşir. Aşağıdaki sonuçlar karşılaştırma kuralıyla denenmiştir:
| Desen | Host header'ı | Sonuç |
|---|---|---|
example.com | example.com | Eşleşir |
example.com | Example.com | Eşleşmez (harfe duyarlı) |
example.com | example.com:8443 | Eşleşmez (port da karşılaştırılır) |
*.example.com | www.example.com | Eşleşir |
*.example.com | a.b.example.com | Eşleşir (* noktaları da karşılar) |
*.example.com | example.com | Eşleşmez (*'dan sonraki nokta zorunludur) |
*.example.com | www.example.com:8443 | Eşleşmez (desen .example.com ile biter) |
*.example.com:8443 | www.example.com:8443 | Eşleşir |
api*.example.com | api2.example.com, api.v2.example.com | Eşleşir (yalnızca arayüzden girilebilir) |
shop?.example.com | shop1.example.com | Eşleşmez (? düz karakterdir) |
Bir Host değeri birden çok grubun desenine uyuyorsa istek önce oluşturulan gruba düşer (Bir istek hangi host group'a düşer; hiçbirine uymazsa ne olur?).
TR7'de Desen Yazımı
| Kural | Uygulama |
|---|---|
| Kök ve alt alan adları | İki desen: example.com ve *.example.com |
| Standart dışı port | Desen portla yazılır: example.com:8443, *.example.com:8443 |
| Büyük/küçük harf | Desenler istemcilerin gönderdiği biçimde (genellikle küçük harf) yazılır |
| Joker konumu | Arayüzde her yerde kabul edilir; WEB-CLI yalnızca başta *. kabul eder; gruplar WEB-CLI ile de düzenlenecekse * yalnızca başta kullanılır |
| Diğer glob yapıları | ?, [], {} kullanılmaz; düz karakter olarak aranır |
Desenler grup eklenirken ya da grubun Edit penceresinde Virtual Host Patterns alanına yazılır (Host Group nasıl eklenir; Virtual Host Patterns alanına ne yazılır?). Varsayılan grupta bu alan yoktur (WAF Mode · Virtual Host Patterns).
Path desenlerindeki glob sözdizimi farklı bir mekanizmadır; sayfa tiplerinde * bir path segmentiyle sınırlıdır ve ** segment sınırını aşar (Exact Path ile glob path arasındaki fark nedir?).
Sık Karıştırılan Noktalar
- "
*.example.comkök alan adını da kapsar."example.comiçin ikinci desen gerekir. - "
*.example.comportlu Host'ları da karşılar." Desen.example.comile bittiği içinwww.example.com:8443eşleşmez; portlu yayın için*.example.com:8443yazılır. - "Host eşleşmesi harf duyarsızdır." Desen ve Host aynı harf biçiminde olmalıdır.
- "
?tek karakter jokeridir." Yalnızca*jokerdir; diğer karakterler birebir aranır.
Dokümantasyonda nasıl yapılır
