Nedir? Nasıl yapılır?

HTTP Error Kodları ve Çözümleri: 400, 500 ve Diğer Yaygın Hatalar Rehberi

Bir web sitesini ziyaret ederken karşınıza “404 Not Found”, “500 Internal Server Error” ya da “502 Bad Gateway” gibi bir mesaj çıktığında çoğunlukla ne yapacağınızı bilmezsiniz. Oysa bu sayılar rastgele seçilmiş değildir; her biri tarayıcı ile sunucu arasında geçen iletişimin sonucunu özetleyen HTTP durum kodlarıdır. Hatanın nerede oluştuğunu (tarayıcıda, ağda, sunucuda ya da uygulamada) ve nasıl çözüleceğini anlamanın en hızlı yolu bu kodları okuyabilmektir. Bu yazıda en yaygın HTTP error kodlarını, sebeplerini ve hem ziyaretçi hem site sahibi tarafında izlenebilecek somut çözüm yollarını tek tek inceleyeceğiz.

HTTP Durum Kodu Nedir?

HTTP durum kodu, bir istemcinin (tarayıcı, mobil uygulama, API istemcisi) sunucuya gönderdiği isteğe karşılık sunucunun döndürdüğü üç haneli sayısal yanıttır. Bu kod, isteğin başarılı olup olmadığını, başarısızsa nerede ve neden hata yaşandığını standart bir dille bildirir.

Kodlar ilk hanelerine göre beş sınıfa ayrılır:

  • 1xx — Bilgilendirme: İstek alındı, işleniyor.
  • 2xx — Başarılı: İstek başarıyla karşılandı (örn. 200 OK).
  • 3xx — Yönlendirme: Kaynak başka bir adrese taşınmış.
  • 4xx — İstemci hatası: Sorun isteği gönderen taraftadır.
  • 5xx — Sunucu hatası: Sorun yanıt veren sunucu tarafındadır.

Hata teşhisinin temeli buradadır: 4xx gördüğünüzde önce isteği, 5xx gördüğünüzde önce sunucuyu sorgularsınız.

4xx — İstemci Kaynaklı Hatalar

4xx sınıfındaki kodlar, sunucunun isteği aldığını ama isteğin kendisinde bir sorun olduğunu söyler. Çoğu zaman çözüm tarayıcı, URL, kimlik doğrulama ya da yetki düzeyinde aranır.

400 Bad Request

Anlamı: Sunucu isteği anlayamadı. İstek sözdizimi bozuk, başlıkları geçersiz ya da gönderilen veri beklenen biçimde değildir.

Sık görülen sebepler:

  • Hatalı yazılmış URL veya bozuk sorgu parametreleri
  • Bozulmuş çerezler (özellikle çok büyük cookie boyutu)
  • API isteğinde geçersiz JSON / form verisi
  • Yanlış Content-Type başlığı

Çözüm yolu:

  • URL’yi yeniden yazıp deneyin; özel karakter ya da boşluk olup olmadığını kontrol edin.
  • Tarayıcı çerezlerini ve önbelleğini temizleyin.
  • API çağrılarında istek gövdesinin geçerli JSON olduğunu, Content-Type başlığının doğru ayarlandığını doğrulayın.
  • Sunucu tarafında istek boyutu (max body size) limitini kontrol edin.

401 Unauthorized

Anlamı: Kaynağa erişmek için kimlik doğrulama gerekiyor; istek doğrulanmamış ya da kimlik bilgileri geçersiz.

Sık görülen sebepler:

  • Eksik veya yanlış kullanıcı adı/parola
  • Süresi dolmuş ya da geçersiz API token / JWT
  • Yanlış kimlik doğrulama yöntemi (Basic, Bearer karışıklığı)

Çözüm yolu:

  • Kimlik bilgilerinizi yeniden girin, parola yöneticisinden kopyalanan değerin başında/sonunda boşluk olmadığından emin olun.
  • API kullanıyorsanız token’ı yenileyin ya da yeni bir token üretin.
  • Authorization başlığının doğru formatta gönderildiğini kontrol edin.

403 Forbidden

Anlamı: Sunucu isteği anladı ama erişime izin vermiyor. Burada sorun “kim olduğun” değil, “yetkin” sorusudur.

Sık görülen sebepler:

  • Dosya/dizin izinlerinin hatalı ayarlanması (örn. 600 yerine 644 olmalı)
  • .htaccess ya da Nginx kuralı tarafından bloklanmış IP / yol
  • Dizin listelemenin (directory listing) kapalı olması ve index dosyasının bulunamaması
  • WAF / güvenlik eklentilerinin isteği engellemesi
  • Hotlink koruması nedeniyle dış kaynaklı isteğin reddedilmesi

Çözüm yolu:

  • Sunucuda dosya izinlerini kontrol edin: dosyalar genelde 644, dizinler 755 olmalıdır.
  • .htaccess veya Nginx konfigürasyonunda “Deny”, “Require” veya “return 403” direktiflerini gözden geçirin.
  • Dizinde geçerli bir index dosyası (index.html, index.php) bulunduğundan emin olun.
  • Güvenlik eklentilerinin / WAF kurallarının false positive üretip üretmediğini log üzerinden inceleyin.

404 Not Found

Anlamı: İstenen kaynak sunucuda mevcut değil. Web’in en sık görülen hatasıdır.

Sık görülen sebepler:

  • Sayfa silinmiş ya da yeniden adlandırılmış
  • URL’de yazım hatası
  • Eski bağlantıların yönlendirme yapılmadan kırılması
  • WordPress / framework’lerde permalink yapısının bozulması

Çözüm yolu:

  • Site sahibiyseniz silinen URL’ler için 301 yönlendirme tanımlayın.
  • WordPress’te Ayarlar > Kalıcı Bağlantılar sayfasını yeniden kaydederek permalink yapısını yenileyin.
  • Sunucu loglarından (access log) en çok 404 alan URL’leri listeleyip toplu yönlendirme planı yapın.
  • Ziyaretçiye kullanışlı, navigasyon içeren bir 404 sayfası tasarlayın.

405 Method Not Allowed

Anlamı: URL geçerli ama kullanılan HTTP metodu (GET, POST, PUT, DELETE vb.) bu kaynak için desteklenmiyor.

Çözüm yolu:

  • API dokümantasyonundan ilgili endpoint’in hangi metodu kabul ettiğini doğrulayın.
  • Form gönderimlerinde method=”post” tanımının doğru olduğundan emin olun.
  • Sunucu tarafında o metodun açıkça reddedilip reddedilmediğini kontrol edin.

408 Request Timeout

Anlamı: Sunucu isteğin tamamlanmasını beklerken zaman aşımına uğradı.

Çözüm yolu:

  • İnternet bağlantınızı kontrol edin; mobil/Wi-Fi geçişlerinde sık görülür.
  • Büyük dosya yüklemelerinde sunucu tarafında client_body_timeout / max_execution_time değerlerini artırın.

413 Payload Too Large

Anlamı: Gönderilen istek gövdesi sunucunun izin verdiği üst sınırı aşıyor.

Çözüm yolu:

  • Nginx’te client_max_body_size, Apache’de LimitRequestBody değerini artırın.
  • PHP için upload_max_filesize ve post_max_size değerlerini büyütün.
  • Mümkünse büyük dosyaları parçalı (chunked) yükleyin.

429 Too Many Requests

Anlamı: Belirli bir süre içinde çok fazla istek gönderildi; rate limit’e takıldınız.

Çözüm yolu:

  • Yanıttaki Retry-After başlığına göre bekleyip yeniden deneyin.
  • İstemci tarafında istekleri kuyruğa alıp exponential backoff uygulayın.
  • Sunucu sahibiyseniz limit değerlerini gerçek trafik desenine göre yeniden ayarlayın; meşru kullanıcıyı bot ile aynı kefeye koymadığınızdan emin olun.

5xx — Sunucu Kaynaklı Hatalar

5xx sınıfı, sunucunun isteği almasına rağmen yanıtı üretemediğini söyler. Çözüm çoğunlukla sunucu ya da uygulama tarafında aranır; ziyaretçi olarak yapabilecekleriniz sınırlıdır.

500 Internal Server Error

Anlamı: Sunucuda beklenmeyen bir hata oluştu, ancak sunucu sorunu daha spesifik bir kodla ifade edemiyor. En genel ve en sık görülen sunucu hatasıdır.

Sık görülen sebepler:

  • Uygulamada yakalanmayan istisna (PHP fatal error, Python traceback, Node.js unhandled exception)
  • Hatalı .htaccess kuralı
  • Yetersiz bellek (PHP memory_limit aşımı)
  • Veritabanı bağlantısının kopması
  • Hatalı dosya izinleri (CGI scriptleri için)

Çözüm yolu:

  • Sunucu hata loglarını (Apache error_log, Nginx error.log, uygulama logu) inceleyin — gerçek hata mesajı buradadır.
  • Son değiştirilen dosyayı / eklentiyi geri alarak hatanın kaynağını izole edin.
  • WordPress’te tüm eklentileri devre dışı bırakıp tek tek aktive ederek sorunlu eklentiyi bulun.
  • memory_limit, max_execution_time gibi PHP değerlerini artırın.
  • .htaccess dosyasını geçici olarak yeniden adlandırıp testi tekrarlayın.

501 Not Implemented

Anlamı: Sunucu, isteği yerine getirmek için gereken işlevi desteklemiyor (örneğin PUT veya DELETE metodu tanımlı değil).

Çözüm yolu:

  • Sunucu yazılımının ve modüllerinin güncel olduğundan emin olun.
  • Reverse proxy arkasında çalışıyorsanız izin verilen metod listesini kontrol edin.

502 Bad Gateway

Anlamı: Bir ara sunucu (genelde Nginx, Cloudflare, yük dengeleyici) arka uçtan geçersiz bir yanıt aldı ya da hiç yanıt alamadı.

Sık görülen sebepler:

  • PHP-FPM / Node.js / uWSGI servisinin çökmüş olması
  • Upstream uygulamanın zaman aşımına uğraması
  • DNS hataları
  • CDN (Cloudflare) ile origin sunucu arasında bağlantı sorunu

Çözüm yolu:

  • Arka uç servisinin çalışıp çalışmadığını kontrol edin: systemctl status php-fpm, systemctl status nginx gibi komutlarla servis durumunu görün.
  • Nginx error log’unda “upstream” satırlarına bakın; hangi servisin yanıt vermediği yazar.
  • Upstream zaman aşımı değerlerini (proxy_read_timeout, fastcgi_read_timeout) artırın.
  • Cloudflare kullanıyorsanız origin IP’nin erişilebilir ve güvenlik duvarında izinli olduğundan emin olun.

503 Service Unavailable

Anlamı: Sunucu geçici olarak isteğe yanıt veremiyor — genellikle aşırı yük, bakım modu ya da kaynak yetersizliği nedeniyle.

Sık görülen sebepler:

  • CPU veya bellek doygunluğu
  • Yapılan planlı bakım
  • Maksimum eşzamanlı bağlantı sayısının aşılması
  • DDoS ya da ani trafik artışı

Çözüm yolu:

  • Sunucu kaynak kullanımını izleyin (top, htop, vmstat); darboğaz CPU mu, RAM mı, disk I/O mu bulun.
  • Web sunucusunun worker/process limitlerini artırın (Apache MaxRequestWorkers, PHP-FPM pm.max_children).
  • Trafik anormalse log analiz edip kötü niyetli istekleri filtreleyin.
  • Planlı bakım sırasında Retry-After başlığını mutlaka ekleyin; arama motorları için kritik.
  • Kalıcı çözüm gerekiyorsa daha güçlü bir VDS / sunucu paketine geçmeyi değerlendirin.

504 Gateway Timeout

Anlamı: Ara sunucu, arka uç sunucudan zamanında yanıt alamadı. 502’ye benzer ama burada sorun “yanıt yok” değil, “yanıt çok geç” olmasıdır.

Sık görülen sebepler:

  • Yavaş çalışan SQL sorguları
  • Uzun süren arka plan işlemlerinin HTTP isteği içinde çalıştırılması
  • Dış API çağrılarının (ödeme, harita, e-posta servisi) takılı kalması
  • Yetersiz upstream timeout ayarları

Çözüm yolu:

  • Yavaş sorgu loglarını (slow query log) açıp veritabanını optimize edin; eksik index’leri ekleyin.
  • Uzun süren işleri kuyruk sistemine (Redis Queue, RabbitMQ, Laravel Queue) taşıyın; HTTP isteğinde bekletmeyin.
  • Dış API çağrılarına makul timeout koyun ve hata durumunda kullanıcıya hızlı geri dönüş sağlayın.
  • Ara katman zaman aşımlarını gerçekçi seviyeye çıkarın (örneğin proxy_read_timeout 60s).

507 Insufficient Storage

Anlamı: Sunucuda isteği tamamlamak için yeterli disk alanı yok.

Çözüm yolu:

  • Disk kullanımını df -h ile kontrol edin.
  • Log, önbellek, eski yedek dosyalarını temizleyin.
  • Kalıcı olarak disk kapasitenizi artırın.

3xx — Yönlendirme Kodları (Kısa Bir Bakış)

3xx kodları teknik olarak hata değildir; ancak yanlış kullanıldığında SEO ve kullanıcı deneyimini bozar.

  • 301 Moved Permanently: Kalıcı yönlendirme. SEO değerini büyük oranda taşır.
  • 302 Found / 307 Temporary Redirect: Geçici yönlendirme. SEO değeri taşımaz; yalnızca geçici durumlar için kullanılmalıdır.
  • 304 Not Modified: Tarayıcı önbelleğinde değişiklik yok; içerik yeniden indirilmez. Performans için önemlidir.

Kalıcı içerik taşımalarında 301 kullanmak, “kısa bir süreliğine kapalıyız” senaryolarında 302/307 tercih etmek doğru yaklaşımdır.

4xx ile 5xx Hatasını Hızlıca Ayırt Etmenin Pratik Yolu

Bir hata gördüğünüzde önce şu soruyu sorun: Aynı sayfa farklı bir tarayıcıda / farklı bir cihazda / farklı bir ağdan açılıyor mu?

  • Sadece sizde hata varsa: Büyük ihtimalle 4xx tarafındasınız (çerez, oturum, IP, tarayıcı eklentisi).
  • Herkeste hata varsa: Sorun 5xx tarafındadır (sunucu, uygulama, veritabanı).
  • Belirli URL’lerde hata varsa: 404 ya da uygulama bug’ı.
  • Belirli saatlerde tekrarlıyorsa: Yük, cron işi ya da yedek görevleri ile çakışıyor olabilir.

Site Sahibi Olarak HTTP Hatalarını Nasıl İzlemelisiniz?

Hataların büyük bölümü kullanıcılar şikâyet etmeden tespit edilebilir. İzleme için önerilen pratikler:

  • Sunucu access log’larını düzenli analiz edin; 4xx ve 5xx oranlarını grafikleyin.
  • Uygulama tarafında merkezi log toplama (ELK, Loki, Sentry) kurun; istisnaların kaybolmasına izin vermeyin.
  • Bağımsız uptime izleme servisleri (UptimeRobot, StatusCake, Better Stack) ile dışarıdan kontrol ettirin.
  • 5xx oranı belirli bir eşiği geçtiğinde otomatik alarm üretin.
  • Önemli sayfalar için synthetic monitoring (botla periyodik ziyaret) çalıştırın.

Ziyaretçi Olarak Karşılaştığınız Hata İçin Hızlı Kontrol Listesi

  1. Sayfayı yenileyin (Ctrl + F5 ile önbelleksiz yenileme).
  2. URL’yi gözden geçirin; yazım hatası var mı?
  3. Tarayıcı çerezlerini ve önbelleğini temizleyin.
  4. Farklı bir tarayıcı / gizli pencere / mobil veri ile deneyin.
  5. VPN veya proxy kullanıyorsanız devre dışı bırakın.
  6. Sorun devam ediyorsa site sahibine ulaşın; ekran görüntüsü ve tam URL paylaşmak çözüm süresini kısaltır.

Sıkça Sorulan Sorular

HTTP error kodları SEO’yu etkiler mi?

Evet, doğrudan etkiler. 4xx oranı yüksek bir site, arama motorları için “bakımsız” sinyali verir. 5xx sürekli tekrarlıyorsa Googlebot tarama frekansını düşürebilir; bu da indeksleme sorunlarına yol açar. 301 yerine 302 kullanmak da SEO değerinin taşınmamasına neden olur.

“Bu site şu anda erişilemiyor” mesajı hangi HTTP koduna karşılık gelir?

Genelde bu mesaj HTTP düzeyinde bir koddan değil, DNS çözümleme hatası ya da TCP bağlantı reddinden kaynaklanır; yani sunucuya hiç ulaşılamamıştır. HTTP kodu üretilebilmesi için en azından bir TCP el sıkışması gerekir.

500 hatası mı 502 hatası mı daha kötü?

İkisi de ciddidir ama farklı yerleri işaret eder. 500 uygulamanızın kendi içindeki bir hatadır; 502 ise ön plandaki sunucunun arka uçla konuşamamasıdır. Çözüm önceliği: 500 için uygulama logu, 502 için servis/upstream sağlığı.

WordPress’te en sık görülen HTTP hataları hangileri?

500 Internal Server Error (eklenti çakışması, PHP bellek), 502/504 (yetersiz PHP-FPM kaynakları), 403 (güvenlik eklentisi), 404 (permalink bozulması) en sık karşılaşılanlardır.

Hata sayfası yerine özel sayfa göstermek gerekir mi?

Evet, özellikle 404 ve 500 için. Markanıza uygun, navigasyon içeren bir hata sayfası hem kullanıcıyı kaybetmemenizi sağlar hem de “hangi bağlantıdan geldi” gibi analizleri kolaylaştırır.

API geliştirirken hangi kodu döndürmeliyim?

Genel kural: başarılı işlemde 200/201, doğrulama hatasında 400, kimliksizse 401, yetkisizse 403, bulunamazsa 404, sunucuda yakalanmayan hatada 500. Tüm hataları 200 ile döndürüp yanıt gövdesinde durum belirten yaklaşım, istemci hata yönetimini bozar; HTTP kodlarını doğru kullanın.

Sonuç

HTTP error kodları, web’in sessiz teşhis dilidir. 4xx kodları “isteği gözden geçir”, 5xx kodları “sunucuyu gözden geçir” der; 3xx kodları yönlendirme kararlarını taşır. Bir hatayla karşılaştığınızda paniklemek yerine kodun sınıfına bakmak, ardından log ve servis durumunu kontrol etmek; çözüm süresini saatlerden dakikalara indirir. Site sahibiyseniz bu kodları aktif izlemek; ziyaretçiyseniz temel kontrol listesini uygulamak çoğu sorunu hızla çözmenizi sağlar.

Stabil bir altyapı ve düşük hata oranı için Kolan’ın güçlü izleme altyapısı eşliğinde sunduğu hosting ve sunucu çözümlerini kolan.net.tr/hosting adresinden inceleyebilir, ihtiyacınıza uygun paketi güvenle seçebilirsiniz.