Hepimiz günlük hayatımızın bir bölümünü internet kullanımına ayırıyoruz. Bazen bir konuda bilgi edinmek bazen bir ürün hakkında araştırma yapmak bazen de bir ürünü satın almak amacıyla interneti kullanıyoruz. Google’da bir arama yaptıktan sonra ya da herhangi bir web sitesinde gezerken başka bir sayfaya geçiş yapmak istediğimizde bazen sayfanın açılmadığını görürüz. Ekranda genelde 404 bazen 500 gibi üç haneden oluşan bazı hata kodları görürüz. Peki bunlar ne anlama gelir? Aslında sayfalara sorunsuz şekilde ulaştığımızda da arka tarafta bizim görmediğimiz yine buna benzer durum kodları oluşur. Bu blog yazımızda işte bu durum kodlarını, yani HTTP durum kodları konusunu ele aldık. Keyifli okumalar diliyorum. :)

- HTTP Durum Kodları (Status Codes) Nedir?

Kullanıcılar bir web sitesini ziyaret etmek istediklerinde iki taraflı bir iletişim ortaya çıkar. Bu iletişimin bir tarafında tarayıcı bulunurken diğer tarafta sunucu yer alır. Bu iletişim kullanıcının bir web sayfasına giriş yapmak istemesiyle başlar. Bir web sayfasına giriş yapan kullanıcı aslında tarayıcı aracılığıyla ilgili web sayfasının yer aldığı sunucuya sayfayı görüntülemek için bir istek gönderir. Sunucu ise bu isteğe üç haneli bir durum kodu ile yanıt verir. Sunucunun tarayıcıya verdiği üç haneli cevaplar HTTP durum kodları ya da HTTP status codes olarak adlandırılır. İlgili durum kodları bazen bir hata olduğunu bildirirken bazen de sayfanın herhangi bir sorun olmadan açıldığını ifade edebilir. Bu nedenle HTTP durum kodlarının daima hata olarak değerlendirilmesi doğru değildir. 

- HTTP Durum Kodları Neden Önemlidir?

HTTP durum kodları hem kullanıcılar hem de web siteleri için oldukça önemli bir unsurdur. Kullanıcılar giriş yapmak istedikleri web sayfaları ile alakalı bir sorun yaşandığında bu sorunun nereden ve neden kaynaklandığını bilmek isterler. Bu nedenle kullanıcılar için HTTP durum kodları oldukça önemlidir. Aynı şekilde olaya web sitesi tarafından baktığımızda da sayfaları belirli sorun ya da sorunlar nedeniyle açılmayan web siteleri hem kullanıcı deneyimi hem de SEO performansı tarafında olumsuz etkilenebilir. Bu nedenle sunucudan kullanıcılara hangi yanıt kodlarının gittiği sorunun kaynağının anlaşılması ve çözüme kavuşturulması açısından oldukça önemlidir.

- HTTP Durum Kodu Sınıfları

1xx: Tarayıcı tarafından gönderilen isteğin sunucuya ulaştığını ve işlemin başladığını bildiren bilgilendirme kodlarını ifade eden durum kodlarıdır.

2xx: Tarayıcı tarafından gönderilen isteğin sunucuya ulaştığını, anlaşıldığını ve başarılı olduğunu ifade eden durum kodlarıdır.

3xx: Erişilmek istenen kaynağın başka bir kaynağa taşındığını ve bir yönlendirmenin söz konusu olduğunu ifade eden durum kodlarıdır.

4xx: İsteğin yerine getirilemediğini, ilgili web sayfasına ya da web sitesine ulaşılamadığını ifade eden durum kodlarıdır.

5xx: Tarayıcı tarafından gönderilen isteğin başarıyla sunucuya ulaştığını fakat sunucu tarafındaki sorunlar nedeniyle isteğin yerine getirilemediğini ifade eden durum kodlarıdır.

- En Sık Karşılaşılan Durum Kodları

Tarayıcı ile sunucu arasındaki iletişim sonucunda ortaya çıkan durum kodları anlamları bakımından çeşitlilik göstermektedir. En sık karşılaşılan ve web siteleri için en büyük etkiye sahip durum kodlarını beraber inceleyelim.

200 Durum Kodu (Başarılı)

En kısa tanımıyla ideal durum kodudur. Bir web sayfası sorunsuz şekilde açılıyorsa sunucudan tarayıcıya 200 durum kodu gönderilir. Sunucudan tarayıcıya 200 durum kodu iletiliyorsa ziyaretçi ve web sitesi için her şey olması gerektiği gibidir diyebiliriz.

301 Durum Kodu (Kalıcı Yönlendirme)

Bir web sayfasının kalıcı olarak bir başka web sayfasına yönlendirildiği ve sayfayı ziyaret eden kullanıcının da otomatik olarak yönlenmesini sağlayan durum kodudur. 301 durum kodu kullanılarak yönlendirilen sayfalar içerik bakımından çok benzer ya da alakalı olduğunda güç kaybı en aza indirilebilir. Bu nedenle web sitesi taşıma gibi işlemlerde kullanılması önerilen en önemli durum kodlarından biridir.

302 Durum Kodu (Geçici Yönlendirme)

Bir web sayfasının geçici olarak bir başka web sayfasına yönlendirildiğini ifade eden durum kodudur. 301 yönlendirme kodundan farkı ilgili sayfanın test aşamasında olması, bakıma alınması ya da bir e-ticaret sitesi için ilgili ürünün stoklarının geçici olarak tükenmesi gibi ilgili sayfanın tekrar aktif edileceği durumlarda kullanılmasıdır. Fakat kullanıcılar 301 yönlendirmesi ile 302 yönlendirmesi arasındaki farkı anlamayacaktır. İlgili sayfaya giriş yapan kullanıcılar direkt olarak diğer sayfaya yönlendirilecektir.

403 Durum Kodu (Erişim İzni Sorunu)

Kullanıcının bir web sayfasına erişmek adına sunucuya gönderdiği isteğe karşılık ilgili web sayfasına erişim izni olmadığı ya da ilgili web sayfasının yasaklandığını ifade eden durum kodudur.

404 Durum Kodu (Bulunamadı)

Kullanıcının görüntülemek istediği web sayfasının ilgili sunucuda bulunmadığını ifade eden durum kodudur. İlgili web sayfası silinmiş ya da URL’si değiştirilmiş olabilir. Fakat 404 durum kodları ilgili sayfanın geçici ya da kalıcı olarak ulaşılamadığı hakkında bir fikir vermez. Kullanıcılar ulaşmak istedikleri bir web sayfasında 404 durum kodu ile karşılaştıklarında genelde siteyi terk ederek farklı web sitelerine yönelirler. Özellikle çok trafik alan ya da URL’i kullanıcılar tarafından bilinen bir sayfa ise bu durum ilgili web sitesini kötü etkileyecektir. Bu nedenle 404 durum kodu içeren sayfaların alakalı karşılıkları varsa yönlendirilmesi önerilir.

Fakat ilgili web sayfası bir süre sonra tekrar aktif olacak ya da bir e-ticaret sitesi için ilgili ürün tekrar stoklarda yer alacaksa ilgili sayfanın 404 durum kodu içerecek şekilde kalması daha doğru olacaktır. 404 şeklinde bırakılan web sayfalarındaki kullanıcıları kaybetmeyip farklı sayfalara yönlendirerek web sitesi içerisinde tutmaya çalışmalıyız. Bu nedenle özel olarak tasarlanan custom 404 sayfaları ile kullanıcıların web sitesini terk etmek yerine farklı sayfalara yönelmelerine yardımcı olabiliriz.

410 Durum Kodu (Kalıcı Olarak Bulunmuyor)

Kullanıcının erişmek istediği web sayfasının sunucuda bulunmadığını ifade eden durum kodudur. 404 durum kodundan farkı ilgili web sayfasının kesin ve kalıcı olarak silindiğini ve geri gelmeyeceğini ifade etmektedir. Ayrıca arama motoru botları 410 durum kodu içeren web sayfaları ile karşılaştığında arama motorları ilgili sayfayı dizinden daha hızlı çıkarabilir. Bu nedenle kullanılırken oldukça dikkate edilmesi gereken durum kodlarından biridir.

500 Durum Kodu (Sunucu Hatası)

Sunucu kaynaklı problemlerde karşılaşılan durum kodudur. Sunucuda bir şeylerin ters gittiğini ifade etmektedir. 500 durum kodu içeren web siteleri için ilgili sunucu probleminin en kısa sürede çözülmesi gerekir. Çünkü arama motorları kullanıcıların ya da arama motoru botlarının erişemediği web sitelerini kullanıcılarına sunmak istemeyecektir.

503 Durum Kodu (Sunucu Kullanılamıyor)

Sunucu tarafında geçici bir sorun olduğunu ifade eden durum kodudur. Genelde sunucuların bakımda olduğu ya da aşırı yüklenme sonucu geçici olarak devre dışı kaldığı durumlarda karşılaşılır. Örneğin üniversite sınavı sonuçları açıklandığında ÖSYM sitesinin ya da büyük bir indirimde ilgili web sitesine geçici süreyle ulaşılamaması bu duruma örnek olarak gösterilebilir. Ayrıca kötü niyetli kişiler tarafından bant genişliğine yönelik yapılan saldırılarda da sunucu geçici olarak devre dışı kalacak ve kullanıcılar ilgili web sitesine giriş yapmak istediklerinde 503 durum kodu ile karşılaşacaktır.

- Diğer HTTP Durum Kodları ve Anlamları

En sık karşılaşılan ve SEO açısından en önemli olan durum kodlarını yukarıda beraber inceledik. Çok sık görülmese de karşılaşılabilen diğer durum kodlarına ve anlamlarına aşağıdan ulaşabilirsiniz.

1xx Durum Kodları

100: Tarayıcının sunucuya gönderdiği istek başlığının sunucu tarafından alındığını ve istek gövdesinin de alınmaya hazır olduğu anlamına gelir.

101: Tarayıcının sunucudan protokol değiştirmesini istediği ve sunucunun da bu isteği kabul ettiği anlamına gelir.

103: Son istek iletisinden önce bazı yanıt başlıklarını döndürdüğü anlamına gelir.

2xx Durum Kodları

200: Tarayıcı ve sunucu tarafında her şeyin yolunda olduğu anlamına gelen ideal durum kodudur.

201: Sunucu tarafından isteğin yerine getirildiği ve yeni bir kaynak oluşturulduğu anlamına gelir.

202: Sunucunun tarayıcıdan gelen isteği kabul ettiği ve işleme koyduğu anlamına gelir. İstek olumlu ya da olumsuz sonuçlanabilir.

203: Kaynak sunucudan 200 durum kodu alınmasına rağmen işlem sırasında kaynağın yanıtı değiştirdiği anlamına gelir.

204: Sunucunun isteği başarıyla işlediği fakat herhangi bir içerik döndürmeyeceğini ifade eder.

205: 204 durum kodu gibi isteğin başarıyla işlendiği fakat herhangi bir içeriğin döndürülmeyeceği anlamına gelir. Ancak tarayıcının belge görünümünü sıfırlaması gerekir.

206: Tarayıcının durdurulmuş indirmelere devam etmesini ve indirmeleri birden fazla akışa ayırmasını sağlayan durum kodudur.

3xx Durum Kodları

300: Tarayıcının isteğini yerine getirmek için sunucunun birden fazla olası kaynağa sahip olduğu ve bu kaynaklar arasında seçim yapması gerektiği anlamına gelir.

301: Bir web sayfası ya da bir kaynağın kalıcı olarak farklı bir kaynağa taşındığını ifade eden durum kodudur.

302: Bir web sayfası ya da bir kaynağın geçici olarak farklı bir kaynağa taşındığını ifade eden durum kodudur.

303: POST, PUT ya da DELETE aracılığıyla tarayıcının talep ettiği kaynağın bulunduğu anlamına gelir. GET kullanarak kaynağı almak için farklı bir URL’ye istekte bulunulması gerekir.

304: Tarayıcıya önbelleğinde depolanan kaynakların değişmediğini belirten durum kodudur.

307: Bir kaynağın geçici olarak farklı bir kaynağa taşındığını ifade eden durum kodudur. 302 durum kodundan farklı olarak HTTP yönetiminin değişmesine izin vermez.

308: Bir kaynağın kalıcı olarak farklı bir kaynağa taşındığını ifade eden durum kodudur. 301 durum kodundan farklı olarak HTTP yönetiminin değişmesine izin vermez.

4xx Durum Kodları

400: Sunucunun tarayıcıdaki hata nedeniyle isteği işleyemediği anlamına gelen durum kodudur.

401: Kullanıcının erişmek istediği kaynak için geçerli kimlik doğrulama bilgilerine sahip olmadığında döndürülen durum kodudur.

402: Ödeme gerektiği ve gelecekte kullanılmak üzere rezerve edildiği anlamına gelen durum kodudur.

403: İlgili kaynağa erişimin yasak olduğu durumlarda döndürülen durum kodudur.

404: İstenen kaynağın sunucuda bulunmadığını ifade eden durum kodudur. En sık görülen HTTP durum kodlarının başında gelmektedir.

405: İstenilen kaynak için gerçekleştirilen istek yöntemi desteklenmediğinde döndürülen durum kodudur.

406: İstemcinin Accept Header bölümünde verilen özelliklerin karşılanmadığını ifade eden durum kodudur. 

407: Bir proxy sunucu ile kimlik doğrulaması ve yetkilendirme gereken durumlarda döndürülen durum kodudur.

408: Sunucunun isteği beklerken zaman aşımına uğraması durumunda karşılaşılan durum kodudur.

409: Bir uyuşmazlık ya da çakışma olması nedeniyle isteğin tamamlanamadığı anlamına gelen durum kodudur.

410: İstenen kaynağın kalıcı olarak o sunucuda bulunmadığı anlamına gelen durum kodudur.

411: İstenen kaynak için belirli bir uzunluk belirtilmediği anlamına gelen durum kodudur.

412: İstekte bulunan ön koşulların sunucu tarafından karşılanamadığı anlamına gelen durum kodudur.

413: Yapılan isteğin boyutunun çok büyük olması nedeniyle işlenemediği ve sunucunun isteği kabul edemediği anlamına gelir.

414: Sunucunun işleyemeyeceği kadar büyük bir sorgu dizesi olarak kodlanmış GET isteği olduğu durumlarda karşılaşılan durum kodudur.

415: Gelen isteğin sunucu tarafından desteklenmeyen bir ortam türü içerdiği anlamına gelen durum kodudur.

416: Dosyanın istenilen bir bölümünü sunucunun sağlayamaması durumunda karşılaşılan durum kodudur.

417: Sunucunun isteğin bekleme başlığı alanındaki gereksinimleri karşılayamaması durumunda karşılaşılan durum kodudur. 

422: Anlamsal hata içeren istekleri sunucunun işleyemediği anlamına gelen durum kodudur.

425: Sunucunun yeniden oynatılabilecek istekleri işleme riskini almadığı durumlarda ortaya çıkan durum kodudur.

426: İsteğin yükseltme başlığı alanındaki içerikten dolayı farklı bir protokole geçilmesi gereken durumlarda karşılaşılan durum kodudur.

428: Sunucu isteği işlemeden önce koşulların belirlenmesi gerektiği anlamına gelen durum kodudur.

429: Kullanıcı belirli  bir süre içerisinde çok fazla istek gönderdiğinde sunucu tarafından hız sınırlayıcı oluşturulduğu anlamına gelen durum kodudur.

431: Üst bilgi alanlarının büyük olması nedeniyle sunucunun isteği işleyememesi anlamında gelen durum kodudur.

5xx Durum Kodları

500: Sunucudaki sorun nedeniyle isteğin tamamlanamadığı durumlarda görülen durum kodudur.

501: Sunucunun isteği yönetemediği ya da işlevleri destekleyemediği anlamında gelen durum kodudur.

502: Sunucunun başka bir sunucuya istek gönderdikten sonra geçersiz yanıt aldığı anlamına gelen durum kodudur.

503: Sunucunun geçici olarak hizmet veremediği ve istekleri işleyemediği durumlarda görülen durum kodudur.

504: Bir isteği işlerken bir sunucunun diğer sunucudan yanıt beklerken isteğin zaman aşımına uğraması durumunda görülen durum kodudur.

505: HTTP protokol sürümünün desteklenemediği anlamında gelen durum kodudur.

511: Kullanılmak istenen ağın isteği sunucuya iletmeden önce kimlik doğrulaması yapması gerektiği durumlarda görülen durum kodudur.

- HTTP Durum Kodları ve Hataları Nasıl Kontrol Edilir?

Öncelikle ziyaret ettiğiniz herhangi bir web sayfasının sunucudan hangi durum kodu ile geldiğini merak ediyorsanız bunun için geliştirilmiş tarayıcı eklentilerini kullanabilirsiniz. Aşağıdan “Redirect Path” isimli eklentiden alınan örnek görsele ulaşabilirsiniz. Görseli incelediğimizde örnek bir sayfanın sunucudan sorunsuz bir şekilde 200 yanıt kodu ile açıldığını görüyoruz.

Aşağıdaki bir başka örnekte ise bir web sayfasının başka bir web sayfasına 301 ile kalıcı olarak yönlendirildiğini görüyoruz. Eklentiye ait örnek görseli incelediğimizde üstteki sayfanın alttaki sayfaya 301 durum kodu ile yönlendirildiğini ve yönlendirilen sayfanın 200 durum kodu ile sorunsuz şekilde açıldığını görüyoruz.

Fakat bir web sitesindeki durum kodları hakkında genel bir bilgi edinmek istiyorsanız Screaming Frog gibi tarama araçlarından yardım alabilirsiniz. Arama motoru botlarını temsil eden bu araçlar web sitenize ait tüm sayfaları tarayarak sizlere taranan web sayfaları hakkında detaylı bilgiler verir.

Screaming Frog isimli araca ait aşağıdaki örnek görselden tarama sonrasında ana ekrandan tüm sayfalarınızın hangi durum kodunu içerdiğini “Status Code” isimli sütundan görebilirsiniz. Ayrıca üst menüde yer alan “Response Codes” isimli menüden durum kodlarını kolaylıkla filtreleyerek hangi sayfalarınızın hangi durum kodları ile açıldığını görebilir ve kolayca export alarak incelemelerinizi gerçekleştirebilirsiniz.

Son olarak Google Search Console hesabınızın “Kapsam” bölümünde yer alan “Ayrıntılar” kısmından da hatalı durum kodları içeren sayfalarınızı ve verilen uyarıları kolaylıkla görebilirsiniz.

- HTTP Durum Kodu Hataları Nasıl Düzeltilir?

Yukarıdaki yöntemlerle sitenizi tarayabilir ya da eklentiler ile önemli sayfalarınızı tek tek kontrol edebilirsiniz. Sonrasında sitenizin büyüklüğüne ya da teknik sorunlarınıza oranla onlarca hatta yüzlerce sayfanızın hata olarak görülen durum kodları içerdiğini görebilirsiniz. Hata içeren bu durum kodları çok farklı sebepler nedeniyle ortaya çıkmış olabilir. Bu nedenle oluşan hataların sebeplerini araştırmalı, sorunun kaynağındaki problemleri çözmeli ve ilgili sayfaları tekrardan kullanıcı ziyaretine açmalısınız. Aksi takdirde kullanıcılar web sitenizde gezerken hata içeren farklı durum kodları ile karşılaşacak ve büyük ihtimalle web sitenizi terk ederek aradıklarını farklı web sitelerinde bulmak isteyecektir. Bu durum da kullanıcı deneyimini ve arama motoru sonuç sayfalarındaki performansınızı olumsuz etkileyecektir. 

- HTTP Durum Kodlarının SEO’ya Etkisi

Arama motoru botları bir web sitesinin ana dizininden başlayarak tüm alt sayfalarını tararlar. Bu tarama esnasından kullanıcı gibi her görüntülenmek istenen sayfa için sunucuya istek gönderilir. Bu istek sonucunda sunucudan gelen durum kodu arama motoru botları tarafından da görülür. Bu tarama sonrasında arama motoru botları hangi sayfaları dizine dahil edeceği ya da hangi sayfaları dizinden çıkaracağını sunucudan gelen durum kodlarını da göz önünde bulundurarak belirler. Ağırlıklı olarak 200 durum kodu içeren web siteleri kullanıcılarına başarılı bir şekilde hizmet verdiği için arama motorları tarafından cezalandırılmaz.

Fakat ilgili web sitesinin sayfa sayısına oranla ağırlıklı olarak 4xx ve 5xx durum kodları içeriyorsa bu arama motoru botları tarafından ilgili web sitesinin kalitesiz olarak değerlendirilmesine ve cezalandırılmasına neden olabilir. Çünkü arama motorları kullanıcılar tarafından sayfaları görüntülenemeyen ve düzgün biçimde taranamayan web sitelerini kullanıcılara üst sıralarda sunmak istemezler. Bu nedenle web siteleri için durum kodları oldukça önemli bir etkendir.