Backend 404 veya 500 döndüğünde özel bir hata sayfası gösterebilir miyim?
Kısa cevap
Evet, HTTP vService'te. Show Content for Backend Service Errors aksiyonunda Error Codes listesinden hata kodu (ör. 404) seçilir, gösterilecek Content Page ve Status Code belirlenir; Kurum Servisi bu kodu döndürdüğünde istemci sunucunun sayfası yerine özel sayfayı görür. Status code varsayılan 200 geldiği için asıl kod seçilir; 404 ve 500 kendi kodlarıyla dönecekse her kod için ayrı aksiyon eklenir. Kullanıcıyı başka bir adrese göndermek için Redirect for Backend Service Errors, yola göre farklı içerik için On Response aşamasında Status Code koşuluyla Show Content kullanılır.
Sorun: Sunucunun Hata Sayfası Teknik Ayrıntı Gösteriyor
Uygulama sunucuları hata durumunda kendi varsayılan sayfalarını döndürür; bu sayfalar her uygulamada farklı görünür, bazen sürüm bilgisi ya da hata ayrıntısı içerir. Kurum Servisinin yapılandırmasına dokunmadan, yanıt TR7'den geçerken kurumsal bir hata sayfasıyla değiştirilir.
Çözüm: Üç Yöntem
Üç yöntem de yalnızca Kurum Servisinden dönen yanıtlara uygulanır. Sunucuya hiç ulaşılamadığında TR7'nin kendi ürettiği 502/503/504 için TR7'nin kendi ürettiği 503/502/504 hataları için özel sayfa gösterebilir miyim? sayfasına bakılır.
| Durumunuz | Uygun yöntem |
|---|---|
| Seçili hata kodlarında bütün yollar için aynı özel sayfa | Yöntem 1: Show Content for Backend Service Errors |
| Hata kodunda kullanıcıyı başka bir adrese göndermek | Yöntem 2: Redirect for Backend Service Errors |
Yola ya da başka koşula göre farklı sayfa (ör. /api/ için JSON) | Yöntem 3: Show content (On response) + Status code koşulu |
Yöntem 1: Show Content for Backend Service Errors Önerilen
- Nasıl çalışır Kurum Servisinden dönen yanıtın kodu seçili kodlardan biriyse yanıt, seçilen sayfa ve Status code ile değiştirilir; aksiyon koşul almaz.
- Nerede açılırLoad Balancer → Actions → Show Content for Backend Service Errors
- Gereksinim Hata sayfası Content Pages'te
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Profiles → Content Pages → Add tıklanır (nasıl eklenir).
Content Page Name, Content Type (varsayılan text/html) ve Content girilir. Bu aksiyon yanıta karakter kümesi eklemediğinden Türkçe karakterler için sayfanın head bölümüne <meta charset="utf-8"> yazılır.
Add tıklanır.
Load Balancer → Actions → Add tıklanır (nasıl eklenir).
Action Name girilir, Action Type = Show Content for Backend Service Errors seçilir.
Error Codes = 404, Content Page = 3. adımdaki sayfa, Status Code = 404 (varsayılan 200). Error codes listesinde birden fazla kod seçilebilir; ancak hepsi bu aksiyonun tek Status code değeriyle döner.
Add tıklanır.
4–7. adımlar Error Codes = 500, Status Code = 500 ile tekrarlanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Save tıklanır. Değişiklik açık bağlantılar kopmadan uygulanır; cluster'da varsayılan auto-sync ile eş cihaza da gönderilir (Manual Sync Mode açıksa Synchronize ile). Kurum Servisi tarafında değişiklik gerekmez.
Doğrulama
curl -i https://www.example.com/olmayan-sayfa
HTTP/1.1 404 + özel sayfaHTTP Logs ekranında istek 404 koduyla görünür.
Durum kodu 404Yöntem 2: Redirect for Backend Service Errors
- Nasıl çalışır Seçili kodlardan biri dönen isteklerde istemci başka bir adrese 302 ile yönlendirilir; Kurum Servisinin hata sayfası istemciye gitmez.
- Nerede açılırLoad Balancer → Actions → Redirect for Backend Service Errors
- Gereksinim Yönlendirilecek sayfa (ör. arama ya da destek sayfası) yönlendirme döngüsü kurmayacak biçimde var olmalı
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Redirect for Backend Service Errors seçilir.
Error Codes = 404; Redirect Location = /arama. Alan fx ile Smart Variable destekler; örneğin /arama?kaynak= arkasına Path/page of the request [URI] eklenerek bulunamayan yol arama sayfasına taşınır.
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
curl -sI https://www.example.com/olmayan-sayfa
302 + Location: /arama…Yöntem 3: Show Content (On Response) + Status Code Koşulu
- Nasıl çalışır Yanıt aşamasında çalışan Show content, Status code koşulu ve başka koşullarla birlikte yalnızca istenen isteklerde içerik döndürür; örneğin
/api/altında 500 dönen isteklere JSON, diğerlerine HTML. - Nerede açılırLoad Balancer → Conditions → Status Code · Actions → Show Content
- Gereksinim Status code koşulu yalnızca On response aşamasında seçilebilir
- vService tipi HTTP
Adım adım yapılandırma
Yöntem 1'in 1–3. adımlarıyla Content Type = application/json, Content = {"error":"internal_error"} olan bir sayfa eklenir (Content Pages profili nedir; kendi HTML sayfamı nasıl hazırlarım?).
Load Balancer → Conditions → Add tıklanır (nasıl eklenir).
Criteria = Status Code, Operator = Equals to (varsayılan), değer 500 girilir.
Add tıklanır.
Load Balancer → Conditions → Add ile ikinci koşul formu açılır.
Criteria = Path, eşleştirme Start, değer /api/ girilir.
Add tıklanır.
Load Balancer → Actions → Add tıklanır.
Action Type = Show Content seçilir.
Execution Level = On response; Content page = JSON sayfası; Status code = 500; Conditions alanında iki koşul and ile seçilir (özel hata sayfaları senaryosu).
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
500 dönen bir API yolu curl -i https://www.example.com/api/rapor ile istenir.
HTTP/1.1 500 + {"error":"internal_error"}Sık Yapılan Hatalar
Status code varsayılanı 200'dür
Status code değiştirilmezse 404 ve 500 yanıtları istemciye 200 koduyla gider; arama motorları hata sayfasını içerik sanar, izleme araçları hatayı görmez. Her aksiyonda asıl hata kodu seçilir.
- TR7'nin ürettiği hataları bu aksiyonla beklemek. Kurum Servisine ulaşılamadığında dönen 502/503/504 bu aksiyonların değil Show Content for Traffic Manager Errors ve Redirect for Traffic Manager Errors aksiyonlarının kapsamıdır.
- Birden çok kodu tek aksiyonda toplayıp kodları korumayı beklemek. Tek aksiyondaki bütün kodlar aynı Status code ile döner; kodlar korunacaksa her kod için ayrı aksiyon eklenir.
- Hiç kod seçmeden kaydetmek. Error codes boşken aksiyon hiçbir yanıtı değiştirmez.
- Türkçe karakterleri unutmak. Show Content for Backend Service Errors yanıtına karakter kümesi eklenmez; sayfaya
<meta charset="utf-8">yazılır.
Dokümantasyonda nasıl yapılır
