example.com'a gelen istekleri www.example.com'a (veya tersine) nasıl yönlendiririm?
Kısa cevap
Location Redirection action'ıyla. Önce Host Header'ı example.com olan istekleri seçen bir HTTP Header condition'ı oluşturulur. Ardından Location Redirection action'ında hedef https://www.example.com olarak yazılır ve isteğin path ve query kısmı Smart Variables ile (Path + query of the request) eklenir; action'a bu condition bağlanır ve action vService'in Actions listesine eklenir. Location Redirection condition bağlanmadan çalışmaz; HTTPS'te sertifikanın iki adı da kapsaması gerekir.
Sorun: Aynı Site Neden Tek Adreste Toplanmalı?
Bir site hem example.com hem www.example.com adıyla açılıyorsa arama motorları bunu iki ayrı site gibi görür, cookie'ler ve analiz verileri ikiye bölünür. Bu yüzden adlardan biri asıl adres seçilir ve diğerine gelen istekler kalıcı (301) yönlendirmeyle ona gönderilir. Yönlendirme yapılırken istenen sayfanın path'i ve query parametreleri korunmalıdır; aksi hâlde kullanıcı hep ana sayfaya düşer.
Çözüm
Host condition'ı ve Location Redirection action'ı
- Nasıl çalışır Condition'a uyan istek, Kurum Servisine gitmeden action'da yazılan adrese yönlendirilir; hedef adres Smart Variables ile isteğin path ve query bilgisini taşır.
- Nerede açılırLoad Balancer → Conditions → HTTP Header; Load Balancer → Actions → Location Redirection; vService → Details → Actions
- Gereksinim HTTPS'te iki adı da kapsayan sertifika; Virtual Hosting kullanılıyorsa iki adın da listede olması; iki adın DNS kaydının vService'in IP'sini göstermesi
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add adımları izlenir.
Criteria olarak HTTP Header seçilir; Header Name alanı Host ile dolu gelir. Eşleştirme yöntemi olarak Exact Match (varsayılan) seçilir ve değer olarak example.com yazılır (tersi için www.example.com).
Add butonuna tıklanır.
Load Balancer → Actions → Add adımları izlenir; Action Type olarak Location Redirection seçilir. Action yalnızca istek aşamasında çalıştığı için formda Execution Level alanı bulunmaz.
Redirect Code alanında kalıcı yönlendirme için 301 (varsayılan) seçilir. Denemeler sırasında tarayıcı önbelleğine takılmamak için önce 302 ile test edilip sonra 301'e geçilebilir.
Redirect Location alanına https://www.example.com yazılır ve hemen arkasına fx (Smart Variables) butonuyla Path + query of the request (↓PathQ) değişkeni eklenir. Path ve query otomatik taşınmaz; eklenmezse kullanıcı hep ana sayfaya yönlendirilir.
Conditions alanında 3. adımda kaydedilen condition seçilir. Condition bağlanmayan Location Redirection hiçbir isteği yönlendirmez.
Add butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında vService açılır; Details → Actions listesine 8. adımda kaydedilen action eklenir. Listede başka yönlendirme ya da engelleme action'ları varsa sıra kontrol edilir; action'lar yukarıdan aşağıya çalışır.
Save butonuna tıklanır.
Doğrulama
curl -I "https://example.com/urunler?sayfa=2"HTTP/2 301 · location: https://www.example.com/urunler?sayfa=2curl -I https://www.example.com/HTTP/2 200Sık Yapılan Hatalar
- Condition bağlamamak. Condition'sız Location Redirection hiçbir isteği yönlendirmez.
- Includes ile eşleştirmek.
example.comdeğerini Includes ile aramakwww.example.comile de eşleşir ve sonsuz yönlendirme döngüsü oluşur; Exact Match kullanılır. - Path ve query'yi eklememek. Yönlendirilen kullanıcı hep ana sayfaya düşer; parametreler kaybolur.
- Sertifikanın iki adı da kapsamaması.
https://example.comisteğinde TLS el sıkışması yönlendirmeden önce yapılır; sertifikaexample.com'u kapsamıyorsa tarayıcı uyarı gösterir. - Action'ı vService'e eklemeyi unutmak. Actions ekranında kaydedilen action, vService'in Actions listesine eklenip vService kaydedilmeden çalışmaz.
- Testi 301 ile yapmak. Tarayıcılar 301'i önbellekte tutar; denemeler 302 ile yapılıp doğrulandıktan sonra 301'e geçilir.
Dokümantasyonda nasıl yapılır
