Skip to content
Smarter by Design.Simpler for Business

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:

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
▢ Scheme▢ Domain▢ Port▣ Path: bu aksiyon bunu değiştirir▢ Parameters (korunur)▢ Anchor
BileşenÖrnekAçıklama
Schemehttp://Protokol
Domain Namewww.example.comSunucu adresi
Port:80Port numarası
Path/path/to/myfile.htmlKaynak yolu
Parameters?key1=value1&key2=value2Query string
Anchor#SomewhereInTheDocumentSayfa 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 ​

HTTP
L7 TCP
Network

Çalışma Anı ​

İstek Anı (On Request)
Cevap Anı (On Response)

Nasıl Eklenir? ​

Yeni bir Set Path Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:

  1. Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
  2. Load Balancer → Actions → Add adımları takip edilir.
  3. Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
  4. Action Type olarak Set Path seçilir.
  5. Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
  6. Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
  7. Add butonuna tıklanarak aksiyon eklenir.

Set Path Aksiyonu Ekleme Formu ​

Set Path Aksiyonu Ekleme FormuSet Path Aksiyonu Ekleme Formu

INFO

Action Name ​

Oluşturulacak olan aksiyona benzersiz ve açıklayıcı bir isim girilir.

INFO

Action Type ​

Aksiyon tipi olarak Set Path seçilir.

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ısayolAçıklamaPopup FormuSonuç (New Path Info)
Add prefixPath'in başına önek eklerEklenecek önek (örn: /api)/api [↓Path]
Remove prefixPath'in başındaki öneki kaldırırSilinecek önek (örn: /api)[↓Path⇒>REPLACE.first(^/api->)]
Add suffixPath'in sonuna sonek eklerEklenecek sonek (örn: .html)[↓Path] .html
Remove suffixPath'in sonundaki soneki kaldırırSilinecek sonek (örn: .html)[↓Path⇒>REPLACE.first(\.html$->)]
Find & replacePath içindeki metni bulup değiştirirBulunacak 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 İstekNew Path InfoBackend'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 EklendiAksiyon Eklendi

Set Path vs Set Path + Query ​

İki aksiyon arasındaki kritik fark:

ÖzellikSet PathSet Path + Query
Path değişir mi?EvetEvet
Query string değişir mi?Hayır (korunur)Evet (değişir)
Orijinal parametrelerKorunurKaybolur
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

Sonuç:

  • ✅ /urunler/laptop-dell-xps-15?color=silver&stock=true → Kurum Servisine /product.php?color=silver&stock=true olarak 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/users ile eşittir

Sonuç:

  • ✅ /api/v1/users?limit=50&offset=100&apikey=xyz → Kurum Servisine /api/v2/users?limit=50&offset=100&apikey=xyz iletilir.
  • ✅ 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 /search ile eşittir

Sonuç:

  • ✅ /search?q=laptop&page=2&sort=price → Kurum Servisine /cgi-bin/search.cgi?q=laptop&page=2&sort=price iletilir.
  • ✅ 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

Sonuç:

  • ✅ /users/123/profile?view=full → Kurum Servisine /user-service/users/123/profile?view=full iletilir.
  • ✅ 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:

Sonuç:

  • ✅ Cookie ab_test=variant_b olan kullanıcı → /?utm_source=google&ref=ad → Kurum Servisine /v2/homepage?utm_source=google&ref=ad iletilir.
  • ❌ 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:

Sonuç:

  • ✅ iOS/Android kullanıcı → /api/products?category=electronics → Kurum Servisine /mobile-api/api/products?category=electronics iletilir.
  • ❌ Desktop kullanıcı → Normal /api/products path'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:
    • Path / ile eşittir
    • OR Path /home ile eşittir
    • OR Path /index ile eşittir

Sonuç:

  • ✅ / → Kurum Servisine /index.html iletilir.
  • ✅ /home?ref=newsletter → Kurum Servisine /index.html?ref=newsletter iletilir, query korunur.
  • ✅ /index?utm_source=social → Kurum Servisine /index.html?utm_source=social iletilir, 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:

Sonuç:

  • ✅ Accept-Language tr-TR header'ı → /products?category=laptop → Kurum Servisine /tr/products?category=laptop iletilir.
  • ✅ 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-search ile eşittir

Sonuç:

  • ✅ /api/old-search?q=laptop&limit=20&offset=0 → Kurum Servisine /api/v3/search?q=laptop&limit=20&offset=0 iletilir.
  • ✅ Deprecated API transparently yeni versiyona migrate edilir, müşteri kod değişikliği yapmaz, parametreler korunur.