Set Path
Set Path Aksiyonu Nedir?
Set Path aksiyonu, gelen HTTP isteğinin URL path kısmını değiştirir. Bu aksiyon, isteği Kurum Servisine iletmeden önce path'i yeniden yazar, böylece Kurum Servisi farklı bir kaynak için istek alır.
Bu aksiyon yalnızca istek (request) aşamasında çalışır ve URL'nin sadece path kısmını değiştirir (query string korunur).
URL Yapısı ve Path
URL'nin bileşenlerini anlamak, doğru aksiyon seçimi için önemlidir:
| Bileşen | Örnek | Açıklama |
|---|---|---|
| Scheme | http:// | Protokol |
| Domain Name | www.example.com | Sunucu adresi |
| Port | :80 | Port numarası |
| Path | /path/to/myfile.html | Kaynak yolu |
| Parameters | ?key1=value1&key2=value2 | Query string |
| Anchor | #SomewhereInTheDocument | Sayfa içi referans |
Set Path vs Set Path + Query
- Set Path: Sadece path'i değiştirir, query string korunur.
- Set Path + Query: Hem path'i hem query string'i değiştirir.
Set Path Aksiyonunun Önemi
URL rewriting, modern web mimarilerinin temel bileşenlerinden biridir. Backend uygulamalarını değiştirmeden URL yapısını yönetmenizi sağlar.
Set Path aksiyonu;
- SEO dostu URL'leri Kurum Servisi path'lerine çevirir,
- Legacy Kurum Servisi uygulamalarını modern URL yapılarıyla kullanır,
- API versiyonlama ve routing yapar,
- İç yönlendirme ve path normalizasyonu sağlar,
- A/B testing için farklı Kurum Servisi path'lerine yönlendirir.
Bu nedenle Set Path aksiyonu, esnek URL yönetimi için kritik bir bileşendir.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Set Path Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Set Path seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Set Path Aksiyonu Ekleme Formu
Set Path Aksiyonu Ekleme Formu
INFO
Hit Counter Varsayılan: Kapalı
Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.
INFO
Set Variable on Hit
Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.
INFO
Path Operation Shortcuts
Sık kullanılan path düzenleme işlemleri için kısayol butonları sunar. Bir butona tıklandığında açılan formda gerekli değer girilir ve New Path Info alanı otomatik olarak doldurulur.
| Kısayol | Açıklama | Popup Formu | Sonuç (New Path Info) |
|---|---|---|---|
| Add prefix | Path'in başına önek ekler | Eklenecek önek (örn: /api) | /api [↓Path] |
| Remove prefix | Path'in başındaki öneki kaldırır | Silinecek önek (örn: /api) | [↓Path⇒>REPLACE.first(^/api->)] |
| Add suffix | Path'in sonuna sonek ekler | Eklenecek sonek (örn: .html) | [↓Path] .html |
| Remove suffix | Path'in sonundaki soneki kaldırır | Silinecek sonek (örn: .html) | [↓Path⇒>REPLACE.first(\.html$->)] |
| Find & replace | Path içindeki metni bulup değiştirir | Bulunacak metin ve yerine yazılacak metin | [↓Path⇒REPLACE.all(/old->/new)] |
Kısayol Kullanımı
Kısayollar, New Path Info alanını Variables ve dönüştürücüler kullanarak otomatik doldurur. Üretilen değer, New Path Info alanında görüntülenir ve istenirse manuel olarak düzenlenebilir.
INFO
New Path Info Zorunlu
Kurum Servisine gönderilecek yeni path değeri girilir. / ile başlamalıdır.
TIP
Bu alan Smart Variables destekler. fx butonu ile mevcut değişkenlere erişilebilir ve dinamik içerik oluşturulabilir.
Örnek değişkenler: istek dizini (İsteğin yapıldığı dizin/sayfa) ve tüm parametreler (Tüm istek parametreleri (query)). Sabit metin değerleriyle birlikte kullanılabilir.
Detaylı bilgi Variables sayfasında yer alır.
Önemli notlar:
- Path'in
/ile başlaması gerekir (form bunu denetlemez) - Query string bu değere dahil edilmez: otomatik olarak korunur
- Smart Variables ile dinamik path oluşturulabilir
Örnek Değerler
| Gelen İstek | New Path Info | Backend'e Gönderilen |
|---|---|---|
/products/123?color=red | /api/items/123 | /api/items/123?color=red |
/old-page | /new-page | /new-page |
/category/electronics | /cat/elec | /cat/elec |
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Set Path vs Set Path + Query
İki aksiyon arasındaki kritik fark:
| Özellik | Set Path | Set Path + Query |
|---|---|---|
| Path değişir mi? | Evet | Evet |
| Query string değişir mi? | Hayır (korunur) | Evet (değişir) |
| Orijinal parametreler | Korunur | Kaybolur |
Karşılaştırma Örneği
Gelen istek: /search?q=laptop&page=2
Set Path (/api/search değeri ile):
- Sonuç:
/api/search?q=laptop&page=2 - Query string korundu
Set Path + Query (/api/search?format=json değeri ile):
- Sonuç:
/api/search?format=json - Orijinal query string kayboldu
Hangisini Kullanmalı?
- Sadece path değiştirilecek, parametreler korunacaksa → Set Path
- Parametreler de değiştirilecek veya temizlenecekse → Set Path + Query
INFO
Yönlendirme Değil, Yeniden Yazma
Bu aksiyon istemciye yönlendirme yanıtı göndermez. İstek, TR7 üzerinde yeniden yazılıp Kurum Servisine iletilir; istemci tarayıcısında adres değişmez ve ek bir gidiş-dönüş oluşmaz.
Aksiyon isteği sonlandırmaz; koşul sağlanmazsa hiçbir şey yapılmaz ve istek olağan akışına devam eder. Aynı vService'e birden fazla path düzenleme aksiyonu eklenebilir; bu durumda listede sonra gelen tanım öncekinin yazdığı değeri değiştirir.
Operasyonel ve Güvenli Kullanım Önerileri
- Her Zaman
/ile Başlayın. Path değeri mutlaka/ile başlamalıdır. Aksi halde geçersiz URL oluşur ve istek başarısız olabilir. - Query string'in korunduğu unutulmamalıdır. Set Path aksiyonu query string'i korur; query string'in de değiştirilmesi gerekiyorsa Set Path + Query aksiyonu kullanılır.
- Koşullarla hedefli uygulama. Koşulsuz path değişikliği tüm istekleri etkiler; belirli path'ler ya da desenler için koşul tanımlanır.
- Smart Variables ile dinamik path. Orijinal path'in parçalarının korunması için Smart Variables kullanılır; örneğin İsteğin yapıldığı dizin/sayfa değişkeniyle orijinal path alınır.
- Kurum Servisi uyumluluğu test edilir. Yeni path'in Kurum Servisi tarafında karşılık gelen bir endpoint'e sahip olduğu doğrulanır.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: SEO Dostu URL'leri Legacy PHP Backend'e Çevirme
Problem: E-ticaret sitesi modern SEO dostu URL'ler kullanıyor (/urunler/laptop-dell-xps-15) ancak arka plandaki legacy PHP uygulaması eski format bekliyor (/product.php?id=123). Kurum Servisi kodu değiştirmeden URL dönüşümü gerekiyor.
Çözüm: Set Path aksiyonu ile SEO URL'lerini Kurum Servisinin beklediği PHP path'ine çevirirken query string'i koruyarak ürün parametrelerini iletmek.
Konfigürasyon:
- New Path Info:
/product.php - Conditions:
- Path
/urunler/ile başlar
- Path
Sonuç:
- ✅
/urunler/laptop-dell-xps-15?color=silver&stock=true→ Kurum Servisine/product.php?color=silver&stock=trueolarak iletilir, query string korunur. - ✅ Kullanıcı SEO dostu URL görür, Kurum Servisi legacy formatı alır, kod değişikliği gerekmez.
Senaryo 2: API Versiyonlama: v1'den v2'ye Geçiş
Problem: API v1 deprecated edildi, ancak hala v1 kullanan müşteriler var. Bu müşterileri otomatik olarak v2'ye yönlendirmek gerekiyor ama query parametrelerinin kaybolmaması önemli.
Çözüm: Set Path ile v1 path'lerini v2'ye çevirirken orijinal query string'i (API key, pagination, filters) korumak.
Konfigürasyon:
- New Path Info:
/api/v2/users - Conditions:
- Path
/api/v1/usersile eşittir
- Path
Sonuç:
- ✅
/api/v1/users?limit=50&offset=100&apikey=xyz→ Kurum Servisine/api/v2/users?limit=50&offset=100&apikey=xyziletilir. - ✅ Müşteri API key'i ve parametreleri korunarak otomatik v2'ye migrate edilir.
Senaryo 3: Legacy CGI Uygulaması Modern URL ile Kullanma
Problem: Arama motoru legacy CGI script'i (/cgi-bin/search.cgi) kullanıyor. Kullanıcılara modern URL (/search) gösterilmesi gerekiyor ancak Kurum Servisi eski CGI path'i bekliyor.
Çözüm: Set Path ile modern /search path'ini legacy CGI path'ine çevirirken arama parametrelerini (q, page, sort) korumak.
Konfigürasyon:
- New Path Info:
/cgi-bin/search.cgi - Conditions:
- Path
/searchile eşittir
- Path
Sonuç:
- ✅
/search?q=laptop&page=2&sort=price→ Kurum Servisine/cgi-bin/search.cgi?q=laptop&page=2&sort=priceiletilir. - ✅ Kullanıcı modern URL görür, legacy CGI arka planda sorunsuz çalışır, arama parametreleri korunur.
Senaryo 4: Microservices: Path Prefix ile Servis Yönlendirme
Problem: Farklı mikroservisler farklı path prefix'leri ile çalışıyor (/user-service/, /order-service/). Frontend ise basit path'ler kullanıyor (/users/, /orders/). Path dönüşümü gerekiyor.
Çözüm: Set Path ile orijinal path'i mikroservis prefix'i ile birleştirerek doğru servise yönlendirmek.
Konfigürasyon:
- New Path Info:
/user-service[İsteğin yapıldığı dizin/sayfa] - Conditions:
- Path
/users/ile başlar
- Path
Sonuç:
- ✅
/users/123/profile?view=full→ Kurum Servisine/user-service/users/123/profile?view=fulliletilir. - ✅ Mikroservis mimarisi frontend'den gizlenir, query parametreleri korunur, dinamik path aktarılır.
Senaryo 5: A/B Testing: Belirli Kullanıcılara Yeni Versiyon
Problem: Yeni homepage (v2) test ediliyor. ab_test=variant_b cookie'sine sahip kullanıcılar yeni versiyonu görmeli, diğerleri eski versiyonu görmeli. Query parametreleri (utm tracking, referrer) korunmalı.
Çözüm: Set Path ile cookie değerine göre yeni homepage path'ine yönlendirirken analytics parametrelerini korumak.
Konfigürasyon:
- New Path Info:
/v2/homepage - Conditions:
- Path
/ile eşittir ANDUser Cookieab_testvariant_bile eşittir
- Path
Sonuç:
- ✅ Cookie
ab_test=variant_bolan kullanıcı →/?utm_source=google&ref=ad→ Kurum Servisine/v2/homepage?utm_source=google&ref=adiletilir. - ❌ Cookie farklı veya yok olan kullanıcı → Eski homepage'e yönlendirilir, A/B test etkilenmez.
Senaryo 6: Mobil Platform: iOS/Android Kullanıcıları Mobil Backend'e Yönlendirme
Problem: Mobil uygulama kullanıcıları (iOS, Android) mobil-optimized backend path'ine yönlendirilmeli. Desktop kullanıcılar normal backend'i kullanmalı. API parametreleri korunmalı.
Çözüm: Set Path ile mobile platform detection yaparak mobil-specific path'e yönlendirmek.
Konfigürasyon:
- New Path Info:
/mobile-api[İsteğin yapıldığı dizin/sayfa] - Conditions:
- Mobile Platform
iOS, Androidiçinde
- Mobile Platform
Sonuç:
- ✅ iOS/Android kullanıcı →
/api/products?category=electronics→ Kurum Servisine/mobile-api/api/products?category=electronicsiletilir. - ❌ Desktop kullanıcı → Normal
/api/productspath'i kullanılır, mobil backend'e gitmez.
Senaryo 7: Path Normalizasyonu: Farklı Homepage URL'lerini Birleştirme
Problem: Homepage için birden fazla URL kullanılıyor (/, /home, /index, /index.html). Cache ve analytics için tümü tek canonical path'e normalize edilmeli.
Çözüm: Set Path ile tüm homepage varyasyonlarını /index.html path'ine yönlendirmek.
Konfigürasyon:
- New Path Info:
/index.html - Conditions:
Sonuç:
- ✅
/→ Kurum Servisine/index.htmliletilir. - ✅
/home?ref=newsletter→ Kurum Servisine/index.html?ref=newsletteriletilir, query korunur. - ✅
/index?utm_source=social→ Kurum Servisine/index.html?utm_source=socialiletilir, canonical form kullanılır.
Senaryo 8: Dil Bazlı Routing: Accept-Language Header ile Otomatik Path Ekleme
Problem: Çok dilli site, kullanıcı tarayıcı dil ayarına göre otomatik olarak doğru dil path'ine yönlendirilmeli (/tr/, /en/). Query parametreleri (search, filters) korunmalı.
Çözüm: Set Path ile Accept-Language header'ına göre dil prefix'i ekleyerek doğru Kurum Servisi path'ine yönlendirmek.
Konfigürasyon:
- New Path Info:
/tr[İsteğin yapıldığı dizin/sayfa] - Conditions:
- HTTP Header
Accept-Languagetriçerir
- HTTP Header
Sonuç:
- ✅ Accept-Language
tr-TRheader'ı →/products?category=laptop→ Kurum Servisine/tr/products?category=laptopiletilir. - ✅ Kullanıcı otomatik Türkçe content'e yönlendirilir, arama/filtre parametreleri korunur.
Senaryo 9: Deprecated Endpoint Migration: Eski API'yi Yeni Path'e Yönlendirme
Problem: /api/old-search endpoint deprecated edildi, yeni endpoint /api/v3/search kullanılmalı. Mevcut müşteriler otomatik migrate edilmeli, query parametreleri (filters, pagination) korunmalı.
Çözüm: Set Path ile deprecated path'i yeni endpoint'e yönlendirirken tüm API parametrelerini korumak.
Konfigürasyon:
- New Path Info:
/api/v3/search - Conditions:
- Path
/api/old-searchile eşittir
- Path
Sonuç:
- ✅
/api/old-search?q=laptop&limit=20&offset=0→ Kurum Servisine/api/v3/search?q=laptop&limit=20&offset=0iletilir. - ✅ Deprecated API transparently yeni versiyona migrate edilir, müşteri kod değişikliği yapmaz, parametreler korunur.
