HTTP Hata Kodları Nedir? 404, 403, 500 ve Tüm Durum Kodları Rehberi
İçindekiler
- Kısaca HTTP durum kodları ne anlatır?
- HTTP durum kodu nedir ve nasıl çalışır?
- Standartta son dönemde ne değişti?
- 1xx bilgilendirme kodları nelerdir?
- 2xx başarı kodları nelerdir?
- 3xx yönlendirme kodları nelerdir?
- 4xx istemci hata kodları nelerdir?
- 401 ile 403 arasındaki fark nedir?
- 400 ile 422 ne zaman kullanılır?
- 5xx sunucu hata kodları nelerdir?
- Resmi olmayan ama sık görülen kodlar hangileridir?
- En sık karşılaşılan hatalar nasıl çözülür?
- 404 Not Found neden çıkar?
- 403 Forbidden neden çıkar?
- 500 Internal Server Error nasıl giderilir?
- 502, 503 ve 504 arasındaki fark nedir?
- 429 Too Many Requests alınca ne yapılır?
- PHP ile doğru durum kodu nasıl döndürülür?
- Durum kodları arama motorlarını ve yapay zeka botlarını nasıl etkiler?
HTTP hata kodları, bir web sunucusunun tarayıcıdan veya uygulamadan gelen isteğe verdiği üç haneli durum cevabıdır. İlk rakam kodun sınıfını gösterir: 1xx bilgilendirme, 2xx başarı, 3xx yönlendirme, 4xx istemci kaynaklı hata, 5xx sunucu kaynaklı hata demektir. Yani 404 gördüğünüzde sorun istenen adrestedir, 500 gördüğünüzde ise sunucudaki kodda veya yapılandırmadadır.
Bu rehberde resmi kayıtlı durum kodlarının tamamını sınıf sınıf ele alıyoruz. Ayrıca Nginx ve Cloudflare gibi yaygın altyapıların kullandığı resmi olmayan kodlara, son standart güncellemesinde değişen isimlere ve sahada en sık karşılaşılan hataların çözümüne de değiniyoruz.
Kısaca HTTP durum kodları ne anlatır?
- 1xx: İstek alındı, işlem sürüyor.
- 2xx: İstek başarıyla işlendi.
- 3xx: İstenen kaynak başka bir adreste, istemci yönlendiriliyor.
- 4xx: Hata istek tarafında; adres, yetki veya gönderilen veri sorunlu.
- 5xx: Hata sunucu tarafında; istek geçerli ama sunucu cevap üretemedi.
HTTP durum kodu nedir ve nasıl çalışır?
Tarayıcı bir adrese gittiğinde sunucuya bir HTTP isteği gönderir. Sunucu cevabın ilk satırında protokol sürümünü ve durum kodunu bildirir. Sayfa içeriği bu satırdan sonra gelir. Kullanıcı çoğu zaman bu kodu görmez; yalnızca bir şeyler ters gittiğinde ekrana yansır.
Durum kodu yalnızca insanlar için değildir. Arama motoru botları, yapay zeka tarayıcıları, API istemcileri ve izleme araçları kararlarını bu koda göre verir. Bu yüzden yanlış kod döndürmek, hata sayfası göstermekten daha büyük bir sorundur.
Bir adresin hangi kodu döndürdüğünü komut satırından saniyeler içinde görebilirsiniz:
curl -I https://teknikzeka.net/
HTTP/2 200
content-type: text/html; charset=UTF-8
Standartta son dönemde ne değişti?
HTTP anlamlarını tanımlayan güncel belge RFC 9110 oldu ve eski RFC 7231 ailesinin yerini aldı. Bu güncellemeyle bazı kodların resmi adı değişti. Kod numaraları aynı kaldı, yalnızca açıklama metinleri sadeleşti.
- 413: Payload Too Large yerine Content Too Large.
- 422: Unprocessable Entity yerine Unprocessable Content. Bu kod artık yalnızca WebDAV kapsamında değil, genel HTTP standardının parçası.
- 418: Şaka amaçlı çaydanlık kodu resmi olarak kullanılmayan, ayrılmış bir numara olarak işaretlendi.
Eski kütüphaneler ve sunucu logları hâlâ eski isimleri gösterebilir. İkisi de aynı kodu ifade eder, endişe etmeye gerek yoktur. Kayıtlı kodların güncel listesi IANA durum kodu kayıt defterinde tutulur.
1xx bilgilendirme kodları nelerdir?
1xx kodları geçici cevaplardır. Sunucu isteği aldığını ve asıl cevabın yolda olduğunu bildirir. Günlük geliştirmede nadiren elle üretilir.
| Kod | Ad | Anlamı |
|---|---|---|
| 100 | Continue | İstek başlıkları kabul edildi, istemci gövdeyi gönderebilir. |
| 101 | Switching Protocols | Protokol değiştiriliyor. WebSocket bağlantısı bu kodla başlar. |
| 102 | Processing | WebDAV işlemi sürüyor, henüz cevap hazır değil. |
| 103 | Early Hints | Asıl cevap gelmeden önce ön yükleme ipuçları gönderilir. |
2xx başarı kodları nelerdir?
2xx kodları isteğin anlaşıldığını ve kabul edildiğini gösterir. API tasarlarken hepsine 200 döndürmek yerine doğru kodu seçmek istemci tarafındaki işi ciddi biçimde kolaylaştırır.
| Kod | Ad | Anlamı |
|---|---|---|
| 200 | OK | İstek başarılı, cevap gövdesinde sonuç var. |
| 201 | Created | Yeni bir kaynak oluşturuldu. Kayıt ekleyen POST istekleri için uygundur. |
| 202 | Accepted | İstek kabul edildi ama işlem henüz bitmedi. Kuyruğa alınan işler için kullanılır. |
| 203 | Non-Authoritative Information | Cevap bir ara sunucu tarafından değiştirilmiş olabilir. |
| 204 | No Content | İşlem başarılı, döndürülecek içerik yok. Silme işlemlerinde yaygındır. |
| 205 | Reset Content | İşlem başarılı, istemci formu sıfırlamalı. |
| 206 | Partial Content | Dosyanın yalnızca istenen bölümü gönderildi. Video oynatma ve kaldığı yerden indirme bununla çalışır. |
| 207 | Multi-Status | WebDAV; birden fazla işlem için ayrı ayrı durum bilgisi döner. |
| 208 | Already Reported | WebDAV; öğe aynı cevapta daha önce bildirildi. |
| 226 | IM Used | Cevap, kaynağa uygulanan fark işlemlerinin sonucudur. |
3xx yönlendirme kodları nelerdir?
3xx kodları istemciye başka bir adrese gitmesini söyler. Arama motoru optimizasyonu açısından en kritik sınıf budur, çünkü kalıcı ve geçici yönlendirme arasındaki fark sıralama değerinin aktarılıp aktarılmayacağını belirler.
| Kod | Ad | Anlamı |
|---|---|---|
| 300 | Multiple Choices | Kaynağın birden fazla sürümü var, istemci seçmeli. |
| 301 | Moved Permanently | Kaynak kalıcı olarak taşındı. Alan adı ve adres yapısı değişikliklerinde kullanılır. |
| 302 | Found | Geçici yönlendirme. Tarayıcılar çoğunlukla yöntemi GET olarak değiştirir. |
| 303 | See Other | Sonucu başka adresten GET ile al. Form gönderiminden sonra tekrar gönderimi önler. |
| 304 | Not Modified | İçerik değişmedi, önbellekteki kopya kullanılabilir. |
| 305 | Use Proxy | Kullanımdan kaldırıldı, güvenlik nedeniyle tarayıcılar desteklemez. |
| 306 | Kullanılmıyor | Eski bir taslakta tanımlıydı, numara ayrılmış durumda. |
| 307 | Temporary Redirect | Geçici yönlendirme; istek yöntemi ve gövde korunur. |
| 308 | Permanent Redirect | Kalıcı yönlendirme; istek yöntemi ve gövde korunur. |
Pratik kural: sayfa kalıcı taşındıysa 301, POST isteğinin de aynen taşınması gerekiyorsa 308 kullanın. Geçici durumlarda 302 veya 307 yeterlidir.
4xx istemci hata kodları nelerdir?
4xx kodları sorunun istekte olduğunu söyler. Adres yanlıştır, yetki yoktur veya gönderilen veri hatalıdır. Aynı isteği değiştirmeden tekrarlamak genellikle sonucu değiştirmez.
| Kod | Ad | Anlamı |
|---|---|---|
| 400 | Bad Request | İstek bozuk veya anlaşılamıyor. |
| 401 | Unauthorized | Kimlik doğrulaması gerekli veya başarısız. |
| 402 | Payment Required | İleride kullanılmak üzere ayrıldı; bazı servisler ödeme gerektiren durumlarda kullanır. |
| 403 | Forbidden | Sunucu isteği anladı ama erişime izin vermiyor. |
| 404 | Not Found | İstenen kaynak bulunamadı. |
| 405 | Method Not Allowed | Bu adres kullanılan istek yöntemini desteklemiyor. |
| 406 | Not Acceptable | Sunucu, istemcinin kabul ettiği biçimde içerik üretemiyor. |
| 407 | Proxy Authentication Required | Önce vekil sunucuda kimlik doğrulanmalı. |
| 408 | Request Timeout | İstemci isteği zamanında tamamlamadı. |
| 409 | Conflict | İstek kaynağın mevcut durumuyla çakışıyor. Aynı kaydın iki kez eklenmesi tipik örnektir. |
| 410 | Gone | Kaynak kalıcı olarak kaldırıldı ve geri gelmeyecek. |
| 411 | Length Required | Content-Length başlığı zorunlu. |
| 412 | Precondition Failed | İstek başlıklarındaki ön koşul sağlanmadı. |
| 413 | Content Too Large | Gönderilen veri sunucu sınırını aşıyor. |
| 414 | URI Too Long | Adres sunucunun işleyebileceğinden uzun. |
| 415 | Unsupported Media Type | Gönderilen içerik türü desteklenmiyor. |
| 416 | Range Not Satisfiable | İstenen bayt aralığı dosyanın dışında. |
| 417 | Expectation Failed | Expect başlığındaki beklenti karşılanamıyor. |
| 418 | I'm a teapot | Nisan şakası olarak doğdu, resmi olarak kullanılmayan numara. |
| 421 | Misdirected Request | İstek, cevap üretemeyecek bir sunucuya yönlendi. |
| 422 | Unprocessable Content | Biçim doğru ama içerik doğrulamadan geçemedi. |
| 423 | Locked | WebDAV; kaynak kilitli. |
| 424 | Failed Dependency | WebDAV; bağlı olduğu önceki işlem başarısız oldu. |
| 425 | Too Early | Sunucu, tekrar oynatılabilecek erken veriyi işlemek istemiyor. |
| 426 | Upgrade Required | İstemci farklı bir protokole geçmeli. |
| 428 | Precondition Required | Sunucu koşullu istek zorunlu tutuyor. |
| 429 | Too Many Requests | İstek sınırı aşıldı, bir süre beklenmeli. |
| 431 | Request Header Fields Too Large | İstek başlıkları çok büyük. Şişmiş çerezler sık görülen nedendir. |
| 451 | Unavailable For Legal Reasons | İçerik yasal nedenlerle erişime kapalı. |
401 ile 403 arasındaki fark nedir?
401, sunucunun sizi tanımadığını söyler; giriş yaparsanız sonuç değişebilir. 403 ise sizi tanısa bile bu kaynağa izin vermediğini bildirir. Giriş yapmış bir kullanıcı yönetici sayfasına girmeye çalışıyorsa doğru cevap 403 olur.
400 ile 422 ne zaman kullanılır?
JSON bozuksa veya zorunlu parametre hiç gelmediyse 400 uygundur. JSON düzgün ama e-posta alanı geçersizse ya da tarih mantıksızsa 422 daha açıklayıcıdır. Bu ayrım, istemci geliştiricisinin hatayı nerede arayacağını doğrudan gösterir.
5xx sunucu hata kodları nelerdir?
5xx kodları isteğin geçerli olduğunu ama sunucunun cevap üretemediğini gösterir. Sorumluluk site sahibindedir ve çözüm neredeyse her zaman sunucu loglarında başlar.
| Kod | Ad | Anlamı |
|---|---|---|
| 500 | Internal Server Error | Genel sunucu hatası; kod veya yapılandırma sorunu. |
| 501 | Not Implemented | Sunucu bu istek yöntemini desteklemiyor. |
| 502 | Bad Gateway | Ara sunucu, arkadaki sunucudan geçersiz cevap aldı. |
| 503 | Service Unavailable | Sunucu geçici olarak hizmet veremiyor; bakım veya aşırı yük. |
| 504 | Gateway Timeout | Ara sunucu, arkadaki sunucudan zamanında cevap alamadı. |
| 505 | HTTP Version Not Supported | İstekte kullanılan HTTP sürümü desteklenmiyor. |
| 506 | Variant Also Negotiates | İçerik pazarlığında döngüsel yapılandırma hatası. |
| 507 | Insufficient Storage | WebDAV; sunucuda işlem için yeterli alan yok. |
| 508 | Loop Detected | WebDAV; işlem sırasında sonsuz döngü tespit edildi. |
| 510 | Not Extended | İstek için gereken uzantılar eksik; tarihsel bir koddur. |
| 511 | Network Authentication Required | Ağa erişim için giriş gerekli. Otel ve kafe ağlarındaki karşılama sayfaları bunu kullanır. |
Resmi olmayan ama sık görülen kodlar hangileridir?
Bazı sunucu yazılımları ve içerik dağıtım ağları kendi kodlarını tanımlar. Bunlar standartta yer almaz ama loglarda ve hata ekranlarında karşınıza çıkar.
| Kod | Kaynak | Anlamı |
|---|---|---|
| 444 | Nginx | Sunucu cevap vermeden bağlantıyı kapattı. |
| 499 | Nginx | İstemci cevap gelmeden bağlantıyı kesti. |
| 520 | Cloudflare | Kaynak sunucu beklenmeyen bir cevap döndürdü. |
| 521 | Cloudflare | Kaynak sunucu bağlantıyı reddetti. |
| 522 | Cloudflare | Kaynak sunucuya bağlantı zaman aşımına uğradı. |
| 523 | Cloudflare | Kaynak sunucuya ulaşılamıyor. |
| 524 | Cloudflare | Bağlantı kuruldu ama cevap zamanında gelmedi. |
| 525 | Cloudflare | SSL el sıkışması başarısız. |
| 526 | Cloudflare | Kaynak sunucudaki SSL sertifikası geçersiz. |
En sık karşılaşılan hatalar nasıl çözülür?
404 Not Found neden çıkar?
En yaygın nedenler yanlış yazılmış bağlantı, silinmiş sayfa ve çalışmayan adres yeniden yazma kurallarıdır. Site taşıma sonrasında tüm iç sayfalar 404 veriyorsa ilk bakılacak yer .htaccess dosyasının yüklenip yüklenmediği ve mod_rewrite modülünün açık olup olmadığıdır.
403 Forbidden neden çıkar?
Sahada en sık gördüğümüz neden dosya izinleridir. FTP ile yüklenen klasörlerin izni 755, dosyaların izni 644 olmalıdır. Klasörde index dosyası yoksa ve dizin listeleme kapalıysa da 403 alınır. Güvenlik duvarı kuralları ve IP engelleri diğer olası kaynaklardır.
500 Internal Server Error nasıl giderilir?
Paylaşımlı sunucularda 500 hatasının büyük bölümü .htaccess dosyasındaki desteklenmeyen bir satırdan kaynaklanır. Dosyayı geçici olarak yeniden adlandırıp sayfayı denemek hızlı bir testtir. Sorun sürüyorsa PHP hata loguna bakılır; söz dizimi hatası, eksik eklenti veya bellek sınırı genellikle orada açıkça yazar.
502, 503 ve 504 arasındaki fark nedir?
502, öndeki sunucunun arkadaki servisten bozuk cevap aldığını gösterir; PHP-FPM servisi durmuş olabilir. 503, sunucunun bilinçli olarak veya yük nedeniyle hizmet vermediğini söyler. 504 ise arkadaki işlemin çok uzun sürdüğünü anlatır; ağır raporlar ve uzun süren dış servis çağrıları tipik nedenlerdir.
429 Too Many Requests alınca ne yapılır?
İstemci tarafında cevaptaki Retry-After başlığı okunmalı ve o süre kadar beklenmelidir. Bot yazarken istekler arasına gecikme koymak ve hata alındığında bekleme süresini katlayarak artırmak engellenmenin önüne geçer.
PHP ile doğru durum kodu nasıl döndürülür?
PHP varsayılan olarak her cevaba 200 kodu verir. Kayıt bulunamadığında ekrana yalnızca mesaj yazmak yetmez; kodun da değişmesi gerekir.
<?php
$yazi = yaziGetir($slug);
if (!$yazi) {
http_response_code(404);
require __DIR__ . '/404.php';
exit;
}
// Kalıcı yönlendirme
header('Location: ' . BASE_URL . '/yeni-adres', true, 301);
exit;
JSON API cevaplarında da aynı ilke geçerlidir:
<?php
http_response_code(422);
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'hata' => 'E-posta adresi geçersiz',
'alan' => 'eposta'
]);
Apache üzerinde özel hata sayfaları .htaccess ile tanımlanır:
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.html
Durum kodları arama motorlarını ve yapay zeka botlarını nasıl etkiler?
Botlar sayfa içeriğinden önce durum koduna bakar. Yanlış kod, doğru içeriğin dizine girmesini engelleyebilir veya silinmiş bir sayfanın aylarca dizinde kalmasına yol açabilir.
- Sahte 404: Bulunamadı mesajı gösterip 200 kodu döndürmek en yaygın hatadır. Bot sayfayı geçerli sanır ve boş içeriği dizine ekler.
- 301 ve 302 karışıklığı: Kalıcı taşımada 302 kullanılırsa eski adres dizinde kalmaya devam edebilir.
- 410 tercihi: Geri gelmeyecek içerikler için 410, sayfanın dizinden çıkarılması gerektiğini 404 koduna göre daha net bildirir.
- Bakım modu: Planlı bakımda 503 ve Retry-After başlığı kullanılmalıdır. Bakım sayfasını 200 ile sunmak, botun bakım metnini asıl içerik olarak kaydetmesine neden olur.
- Yönlendirme zinciri: Art arda birkaç yönlendirme tarama bütçesini tüketir. Her eski adres doğrudan son adrese gitmelidir.
- Sürekli 5xx: Uzun süren sunucu hataları botların tarama sıklığını düşürmesine yol açar.
Düzenli kontrol için sunucu erişim loglarını durum koduna göre süzmek yeterlidir. Haftada bir 404 ve 5xx satırlarına göz atmak, kırık bağlantıları ve sessizce bozulan sayfaları kullanıcıdan önce fark etmenizi sağlar. Benzer pratik rehberler için Teknik Zeka Net ana sayfasındaki web programlama yazılarına bakabilirsiniz.

0 Yorum