Skip to content
Smarter by Design.Simpler for Business

Set Path + Query ​

Set Path + Query Aksiyonu Nedir? ​

Set Path + Query aksiyonu, gelen HTTP isteğinin URL path ve query string kısımlarını birlikte değiştirir. Bu aksiyon, isteği Kurum Servisine iletmeden önce hem path'i hem de parametreleri yeniden yazar.

Bu aksiyon yalnızca istek (request) aşamasında çalışır ve URL'nin path + query string kısımlarını değiştirir.

URL Yapısı ve Path + Query ​

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: değişir▣ Parameters: değişir▢ Anchor
BileşenEtkilenir mi?Açıklama
SchemeHayırProtokol korunur
Domain NameHayırSunucu adresi korunur
PortHayırPort numarası korunur
PathEvetKaynak yolu değişir
ParametersEvetQuery string değişir
AnchorHayırSayfa içi referans (sunucuya gönderilmez)

Set Path + Query vs Set Path

  • Set Path + Query: Hem path'i hem query string'i değiştirir.
  • Set Path: Sadece path'i değiştirir, query string korunur.

Set Path + Query Aksiyonunun Önemi ​

Tam URL rewriting, hem path hem de parametrelerin kontrolünün gerektiği senaryolarda kullanılır.

Set Path + Query aksiyonu;

  • Query string parametrelerini yeniden düzenler,
  • Path ve parametreleri birlikte değiştirir,
  • Eski URL formatlarını yeni formatlara dönüştürür,
  • Parametre temizleme veya ekleme yapar,
  • Kompleks URL dönüşümleri gerçekleştirir.

Bu nedenle Set Path + Query aksiyonu, tam URL kontrolü için güçlü bir araçtır.

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 + Query 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 + Query 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 + Query Aksiyonu Ekleme Formu ​

Set Path + Query Aksiyonu Ekleme FormuSet Path + Query 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 + Query 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] [↓Query]
Remove prefixPath'in başındaki öneki kaldırırSilinecek önek (örn: /api)[↓Path⇒>REPLACE.first(^/api->)] [↓Query]
Add suffixPath'in sonuna sonek eklerEklenecek sonek (örn: .html)[↓Path] .html [↓Query]
Remove suffixPath'in sonundaki soneki kaldırırSilinecek sonek (örn: .html)[↓Path⇒>REPLACE.first(\.html$->)] [↓Query]
Find & replacePath içindeki metni bulup değiştirirBulunacak metin ve yerine yazılacak metin[↓Path⇒REPLACE.all(/old->/new)] [↓Query]

Query String Korunması

Set Path aksiyonundan farklı olarak, Set Path + Query aksiyonunda kısayollar otomatik olarak [↓Query] değişkenini ekler. Bu sayede orijinal query string korunur. Eğer query string'in korunması istenmiyorsa, New Path Info alanından [↓Query] değişkeni manuel olarak kaldırılabilir.

INFO

New Path Info Zorunlu ​

Kurum Servisine gönderilecek yeni path ve query string değeri girilir. Path / ile başlamalı, query string ? ile ayrılmalı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), tüm parametreler (Tüm istek parametreleri (query)) ve tek bir parametre (query parametresi). Sabit metin değerleriyle birlikte kullanılabilir.

WARNING

Tüm istek parametreleri (query) değişkeni parametreleri baştaki ? ile birlikte getirir. Bu değişkenden önce ayrıca ? yazılmamalıdır; yazılırsa adreste çift ? oluşur.

Detaylı bilgi Variables sayfasında yer alır.

Önemli notlar:

  • Path'in / ile başlaması gerekir (form bunu denetlemez)
  • Query string eklemek için ? kullanılır
  • Orijinal query string korunmaz: tamamen değiştirilir
  • Smart Variables ile dinamik içerik oluşturulabilir

Format:

/yeni-path?param1=deger1&param2=deger2
Örnek Değerler
Gelen İstekNew Path InfoKurum Servisine Gönderilen
/old?a=1&b=2/new?x=10/new?x=10
/search?q=test/api/search?query=test&format=json/api/search?query=test&format=json
/page[İsteğin yapıldığı dizin/sayfa]?source=tr7/page?source=tr7

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 + Query (/api/search?format=json değeri ile):

  • Sonuç: /api/search?format=json
  • Orijinal query string kayboldu

Set Path (/api/search değeri ile):

  • Sonuç: /api/search?q=laptop&page=2
  • Query string korundu

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 ​

  • Orijinal parametrelerin kaybolacağı unutulmamalıdır. Bu aksiyon orijinal query string'i tamamen değiştirir; parametrelerin korunması gerekiyorsa Set Path aksiyonu kullanılır ya da orijinal query, Smart Variables ile yeni değere dâhil edilir.
  • Parametrelerin korunması için Smart Variables kullanılır. Orijinal query string'in korunması için /new-path[Tüm istek parametreleri (query)] biçimi kullanılır.
  • URL Encoding'e Dikkat Edin. Query string parametreleri URL encoded olmalıdır. Özel karakterler (boşluk, &, = vb.) encode edilmelidir.
  • Koşullarla hedefli uygulama. Koşulsuz değişiklik tüm istekleri etkiler; belirli path'ler ya da desenler için koşul tanımlanır.
  • Kurum Servisi beklentileri kontrol edilir. Yeni URL'nin Kurum Servisi tarafında beklenen biçimde 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: Hassas Query Parametrelerini Temizleme ​

Problem: Public API endpoint'lere gelen isteklerde debug parametreleri, session token'ları veya internal tracking ID'leri bulunuyor. Bu hassas bilgilerin Kurum Servisi loglarına yazılması güvenlik riski oluşturuyor.

Çözüm: Set Path + Query ile sadece path'i iletip tüm query parametrelerini temizleyerek hassas bilgilerin Kurum Servisine ulaşmasını engellemek.

Konfigürasyon:

  • New Path Info: [İsteğin yapıldığı dizin/sayfa]
  • Conditions:

Sonuç:

  • ✅ /public/api/data?token=secret123&debug=true → Kurum Servisine sadece /public/api/data iletilir, hassas parametreler temizlenir.
  • ✅ Güvenlik logları temiz kalır, debug/token bilgileri Kurum Servisine sızmaz.

Senaryo 2: Otomatik Tracking Parametresi Enjeksiyonu ​

Problem: Tüm API isteklerine analytics için source=tr7 ve timestamp bilgisi eklenmesi gerekiyor. Mevcut query parametreleri korunmalı ancak tracking bilgisi otomatik olarak append edilmeli.

Çözüm: Set Path + Query ile orijinal path ve query'yi koruyup sonuna tracking parametrelerini eklemek.

Konfigürasyon:

  • New Path Info: [İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&source=tr7
  • Conditions:

Sonuç:

  • ✅ /api/products?category=laptop&limit=10 → Kurum Servisine /api/products?category=laptop&limit=10&source=tr7&ts=1640995200 iletilir.
  • ✅ Orijinal parametreler korunur, otomatik tracking bilgisi eklenir, analytics eksiksiz çalışır.

Senaryo 3: Legacy API: Parametre Adı ve Format Dönüşümü ​

Problem: Eski API q parametresi ile arama yapıyor, yeni Kurum Servisi API'si term parametresi bekliyor. Ayrıca pagination için page/size yerine offset/limit kullanılmalı. Müşteriler eski formatı kullanmaya devam ediyor.

Çözüm: Set Path + Query ile eski parametre isimlerini yeni formata çevirip Kurum Servisinin beklediği yapıya dönüştürmek.

Konfigürasyon:

  • New Path Info: /api/v2/search?term=[q istek parametresi]&limit=20&format=json
  • Conditions:

Sonuç:

  • ✅ /search?q=laptop&page=2 → Kurum Servisine /api/v2/search?term=laptop&limit=20&format=json iletilir.
  • ✅ Eski API müşterileri kod değiştirmeden yeni backend'i kullanır, parametre dönüşümü transparently yapılır.

Senaryo 4: RESTful Path'i Query String'e Dönüştürme ​

Problem: Modern frontend RESTful URL kullanıyor (/products/123/reviews), legacy PHP backend ise query string bekliyor (/product.php?id=123&action=reviews). Backend kodu değiştirilemez.

Çözüm: Set Path + Query ile RESTful path segment'lerini parse edip query parametrelerine dönüştürmek.

Konfigürasyon:

  • New Path Info: /product.php?action=reviews: dizinden değer çıkarmak gerekiyorsa istek dizini değişkenine metin bölme akıllı fonksiyonu uygulanır
  • Conditions:
    • Path ^/products/[0-9]+/reviews$ REGEX

Sonuç:

  • ✅ /products/123/reviews → Kurum Servisine /product.php?id=123&action=reviews iletilir.
  • ✅ RESTful API → Legacy PHP transparent conversion, kod değişikliği gerekmez.

Senaryo 5: Cache-Busting Parametrelerini Kaldırma ​

Problem: Frontend static asset'ler için cache-busting parametreleri ekliyor (/app.js?v=1.2.3, /style.css?_=timestamp). Ancak Kurum Servisi bu parametreleri cache key'e dahil ediyor ve cache hit oranı düşüyor.

Çözüm: Set Path + Query ile static asset'ler için tüm query parametrelerini kaldırarak cache-friendly URL'ler oluşturmak.

Konfigürasyon:

  • New Path Info: [İsteğin yapıldığı dizin/sayfa]
  • Conditions:
    • Path ile biter .js
    • OR Path ile biter .css

Sonuç:

  • ✅ /app.js?v=1.2.3 → Kurum Servisine /app.js iletilir, cache-busting parametresi kaldırılır.
  • ✅ /style.css?_=1640995200 → Kurum Servisine /style.css iletilir, cache hit oranı artar.
  • ✅ Static asset'ler için cache efficiency maksimize edilir.

Senaryo 6: Pagination Format Dönüşümü ​

Problem: Eski API page ve size parametreleri kullanıyor, yeni Kurum Servisi API'si offset ve limit bekliyor. Pagination formatı dönüştürülmeli, diğer parametreler (filters, sorting) korunmalı.

Çözüm: Set Path + Query ile pagination parametrelerini dönüştürüp diğer parametreleri koruyarak yeni API formatına uyum sağlamak.

Konfigürasyon:

  • New Path Info: /api/v2/products?limit= + size query parametresi: sayısal dönüşüm gerekiyorsa parametre değişkenine çarpma/çıkarma akıllı fonksiyonları uygulanır
  • Conditions:

Sonuç:

  • ✅ /api/products?page=3&size=20&category=electronics → Kurum Servisine /api/v2/products?offset=40&limit=20&category=electronics iletilir.
  • ✅ Pagination format dönüşümü yapılır, filter parametreleri korunur.

Senaryo 7: Kurum Servisine Sabit Parametre Ekleme ​

Problem: Kurum Servisi, isteğin hangi kanaldan geldiğini bilmek istiyor; ancak istemcinin bu bilgiyi göndermesi beklenemiyor.

Çözüm: Mevcut parametreler korunarak isteğe sabit bir parametre eklenir.

Konfigürasyon:

  • New Path Info: [İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&channel=web
  • Conditions:
    • Path ile başlar /api/

Sonuç:

  • ✅ /api/products?size=L → Kurum Servisine /api/products?size=L&channel=web iletilir.
  • ✅ Mevcut parametreler → Değişken sayesinde korunur.
  • ⚠️ Parametresiz istek → Adres /api/products&channel=web biçiminde oluşur; bu senaryoda parametrenin her zaman var olduğu koşulla güvence altına alınmalıdır.

Senaryo 8: Query String'i Tamamen Yeniden Oluşturma ​

Problem: Public search endpoint'e gelen çok fazla gereksiz parametre var. Kurum Servisi API'sine sadece q (search term) ve limit parametreleri gönderilmeli, diğer tüm parametreler temizlenmeli.

Çözüm: Set Path + Query ile orijinal query'yi tamamen değiştirip sadece gerekli parametreleri içeren yeni query oluşturmak.

Konfigürasyon:

  • New Path Info: /api/search?q=[q istek parametresi]&limit=50
  • Conditions:
    • Path /search ile eşittir

Sonuç:

  • ✅ /search?q=laptop&debug=1&internal_id=xyz&tracking=abc → Kurum Servisine /api/search?q=laptop&limit=50 iletilir.
  • ✅ Gereksiz/hassas parametreler temizlenir, sadece search term ve limit iletilir.

Senaryo 9: Default Parametre Enjeksiyonu: Eksik Parametreleri Tamamlama ​

Problem: Bazı eski client'lar API isteklerinde format parametresi göndermiyor, Kurum Servisi API'si default olarak XML dönüyor. Tüm client'lar JSON almalı.

Çözüm: Set Path + Query ile orijinal parametreleri koruyup eksik format=json parametresini eklemek.

Konfigürasyon:

  • New Path Info: [İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&format=json
  • Conditions:

Sonuç:

  • ✅ /api/users?limit=10 → Kurum Servisine /api/users?limit=10&format=json iletilir.
  • ✅ Eksik format parametresi otomatik eklenir, tüm client'lar JSON response alır, Kurum Servisi default XML davranışı override edilir.