- Konu sahibi
- #1
HTTP 404 hatası, istemcinin istediği URL’ye karşılık gelen kaynağın sunucu tarafından bulunamadığını belirten HTTP yanıtıdır. Örneğin
İstemci genellikle bir tarayıcı, arama motoru, API istemcisi veya başka bir sunucudur. İstemci bir HTTP isteği gönderir:
Sunucu URL’yi mevcut bir dosyayla, uygulama rotasıyla veya veritabanındaki bir kayıtla eşleştirmeye çalışır. Eşleşme bulunamazsa şu tür bir yanıt verir:
Yanıttaki durum satırı teknik sonucu gösterir; gövdede görünen “Sayfa bulunamadı” tasarımı ise kullanıcıya sunulan hata sayfasıdır. Özel bir 404 sayfası hazırlanmış olması, yanıt kodunun otomatik olarak
Karar verirken asıl soru, kaynağın geçici olarak mı bulunamadığı, kalıcı olarak mı silindiği veya aslında başka bir sayfayla mı karıştırıldığıdır.
Bir makale yeni bir URL’ye taşındıysa 404 veya 410 yerine uygun bir kalıcı yönlendirme kullanılabilir. Kaynağın artık sunulmadığı ve durumun kalıcı olduğu biliniyorsa 410 daha açıklayıcıdır. Durumdan emin değilseniz 404 kullanmak daha doğru yaklaşımdır.
Soft 404’te tarayıcıda hata mesajı görünebilir; ancak HTTP başlığında
Bu ayar yalnızca hata sayfasının görünümünü değiştirir; eksik kaynağın yanıt kodu yine 404 olmalıdır. Dinamik uygulamalarda da uygulamanın gerçekten 404 durum kodu ürettiğini ayrıca kontrol edin.
En yaygın hata, her bilinmeyen URL’yi ana sayfaya yönlendirmektir. Bu yaklaşım ziyaretçiye yardımcı görünse de eksik adres ile ana sayfanın aynı kaynakmış gibi algılanmasına ve soft 404 oluşmasına yol açabilir. İkinci hata, taşınmış içerik için 404 bırakmaktır; içerik aynıysa yeni adrese kalıcı yönlendirme daha uygundur. Üçüncü hata ise yalnızca görsel hata sayfasını test edip HTTP durum kodunu kontrol etmemektir.
https://example.com/urun/eski-model adresi silinmiş, yanlış yazılmış veya artık o konumda bulunmuyorsa sunucu 404 Not Found döndürebilir. Bu yanıt, tek başına sunucunun çöktüğü anlamına gelmez; çoğu durumda istek sunucuya ulaşmış, fakat istenen kaynak eşleştirilememiştir.404 yanıtı nasıl oluşur?
İstemci genellikle bir tarayıcı, arama motoru, API istemcisi veya başka bir sunucudur. İstemci bir HTTP isteği gönderir:
Kod:
GET /blog/eski-yazi HTTP/1.1
Host: example.com
Sunucu URL’yi mevcut bir dosyayla, uygulama rotasıyla veya veritabanındaki bir kayıtla eşleştirmeye çalışır. Eşleşme bulunamazsa şu tür bir yanıt verir:
Kod:
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Yanıttaki durum satırı teknik sonucu gösterir; gövdede görünen “Sayfa bulunamadı” tasarımı ise kullanıcıya sunulan hata sayfasıdır. Özel bir 404 sayfası hazırlanmış olması, yanıt kodunun otomatik olarak
200 OK yapılmasını gerektirmez. Sayfa bulunamadığında HTTP yanıtının da 404 kalması gerekir.404, 410 ve soft 404 farkı
Karar verirken asıl soru, kaynağın geçici olarak mı bulunamadığı, kalıcı olarak mı silindiği veya aslında başka bir sayfayla mı karıştırıldığıdır.
| Yanıt | Anlamı | Uygun kullanım |
|---|---|---|
| 404 Not Found | Kaynak bulunamadı; geçici mi kalıcı mı olduğu belirtilmiyor | Yanlış URL, eksik dosya veya durumu kesinleşmemiş kaldırılmış içerik |
| 410 Gone | Kaynak artık sunulmuyor ve durumun kalıcı olması bekleniyor | Süresi bitmiş kampanya veya bilinçli olarak tamamen silinmiş içerik |
| Soft 404 | İçerik bulunamadığı hâlde sunucu 200 gibi başarılı bir yanıt döndürüyor | Kaçınılması gereken hatalı uygulama |
Soft 404’te tarayıcıda hata mesajı görünebilir; ancak HTTP başlığında
200 OK döner. Örneğin uygulama her bilinmeyen URL’yi ana sayfaya yönlendiriyor veya “İçerik bulunamadı” metnini başarılı sayfa olarak sunuyorsa, istemci ile sunucunun verdiği anlam uyuşmaz. Bu durum hata takibini ve otomatik istemci davranışını zorlaştırır.Bir 404 yanıtını nasıl yorumlamalısınız?
- İstenen URL’yi karakter karakter kontrol edin. Büyük-küçük harf, eksik klasör, yanlış uzantı, gereksiz eğik çizgi ve kodlanmamış özel karakterler sık görülen nedenlerdir.
- Kaynak gerçekten taşındıysa eski ve yeni adres arasında anlamlı bir yönlendirme kurun. Alakasız biçimde ana sayfaya yönlendirmek yerine kullanıcıyı aynı içeriğin yeni adresine götürün.
- Kaynak silindiyse karar verin: geçici veya belirsiz durum için 404, kalıcı ve geri dönmeyecek silme için 410 kullanın.
- İç bağlantıları, menüleri, site haritalarını ve uygulama içindeki URL üretimini kontrol edin. Kendi sitenizin artık var olmayan adreslerine bağlantı vermeyin.
- Yanıtı istemci açısından doğrulayın. Tarayıcıdaki tasarıma güvenmek yerine durum kodunu ve yönlendirme zincirini inceleyin. Örneğin komut satırında
curl -I https://example.com/ornek-adresbir HEAD isteği gönderir. Tarayıcıdaki sayfa yüklemesini değerlendirmek için GET isteğinin durum kodunu da ağ panelinde kontrol edin. - Sunucu günlüğünde istek yolu, yanıt kodu, istemci ve istek zamanı bilgilerini inceleyin. Aynı adresin sürekli taranması, eski bir dış bağlantıdan veya hatalı URL üreten bir uygulamadan kaynaklanabilir.
ErrorDocument ile tanımlanabilir:
Kod:
ErrorDocument 404 /errors/not-found.html
Bu ayar yalnızca hata sayfasının görünümünü değiştirir; eksik kaynağın yanıt kodu yine 404 olmalıdır. Dinamik uygulamalarda da uygulamanın gerçekten 404 durum kodu ürettiğini ayrıca kontrol edin.
Sık yapılan hatalar
En yaygın hata, her bilinmeyen URL’yi ana sayfaya yönlendirmektir. Bu yaklaşım ziyaretçiye yardımcı görünse de eksik adres ile ana sayfanın aynı kaynakmış gibi algılanmasına ve soft 404 oluşmasına yol açabilir. İkinci hata, taşınmış içerik için 404 bırakmaktır; içerik aynıysa yeni adrese kalıcı yönlendirme daha uygundur. Üçüncü hata ise yalnızca görsel hata sayfasını test edip HTTP durum kodunu kontrol etmemektir.