Google Search Console, Next.js sitelerinde sıklıkla "soft 404" hataları işaretler; bu da tarama bütçesinin (crawl budget) boşa gitmesine neden olabilir.

Soft 404 aslında nedir?

Gerçek bir 404 yanıtı, tarayıcılara ve botlara istenen kaynağın mevcut olmadığını bildiren bir HTTP 404 durum kodu gönderir. Buna karşılık bir soft 404, çok az içerik sunarken veya hiç içerik sunmazken 200 OK durumu döndürür. Arama motorları 200 kodunu sağlıklı bir sayfa olarak okur, ancak sayfa hiçbir değer sağlamaz. Sonuç, boşa harcanan tarama döngüleri ve Google'a sitenin içerik kalitesinin düşük olduğuna dair bir sinyal gönderilmesidir.

Next.js neden bu tuzağa düşüyor?

Next.js'in dinamik yönlendirmesi (dynamic routing), her URL'yi tek tek kodlamanıza gerek kalmadan /products/[slug] gibi sayfalar sunmanıza olanak tanır. Bir ürün veri tabanından silindiğinde bile bileşen (component) hala render edilir ve eğer kod eksik veriyi kontrol etmiyorsa, Next.js varsayılan olarak 200 OK yanıtı verir. Aynı durum, bir kullanıcı URL'yi yanlış yazdığında veya bir yeniden tasarım sonrası eski rotalar (routes) kalıntı olarak kaldığında da gerçekleşir. Sayfa yüklenir ancak anlamlı bir içerik sunmaz, bu da Search Console'da soft 404 bayrağının tetiklenmesine neden olur.

Site sahipleri için riskler

  • Tarama bütçesi israfı – Botlar, site başına sınırlı sayıda istek ayırır. Soft 404'ler bu kotayı tüketerek gerçek sayfaların dizine eklenmesi için daha az şans bırakır.
  • SEO cezası – Tekrarlanan soft 404'ler, arama motorlarına sitenin düşük kaliteli olduğu mesajını verir.
  • Kullanıcı deneyimi kaybı – Boş bir sayfaya düşen ziyaretçiler anında siteden ayrılır (bounce), bu da hemen çıkma oranlarını artırır ve dönüşümleri olumsuz etkiler.

Bir soft 404 hatası nasıl gerçek bir 404'e dönüştürülür?

1. Yerleşik notFound yardımcısını kullanın

  • App Routernext/navigation üzerinden notFound fonksiyonunu içe aktarın (import). Veri çekme işleminden sonra, sonuç mevcut değilse notFound() çağrısını yapın. Next.js bu durumda gerçek bir 404 durumu gönderir.
  • Pages Router – Veri çekme işlemi başarısız olduğunda getStaticProps veya getServerSideProps üzerinden { notFound: true } döndürün. Bu, eski yönlendirme API'si için de aynı işi yapar.

2. Özel bir 404 sayfası yayınlayın

Varsayılan hata sayfası kullanıcıları çaresiz bırakır. Navigasyon bağlantıları, bir arama kutusu veya ilgili içerik önerileri içeren app/not-found.js (App Router) veya pages/404.js (Pages Router) dosyaları oluşturun. İyi tasarlanmış bir 404 sayfası, ziyaretçileri doğrudan çıkışa göndermek yerine sitede tutar.

3. Yetim (orphaned) rotaları temizleyin

Artık bir amaca hizmet etmeyen statik sayfaları silin. Eğer bir dosya duruyor ancak içeriği boşsa, bir notFound yanıtı ekleyin veya dosyayı tamamen kaldırın. pages veya app dizinlerinin düzenli olarak denetlenmesi, çalışmayan URL'lerin sızmasını engeller.

4. Taşınan içerikler için kalıcı (301) yönlendirmeler kurun

Bir sayfanın URL'si değiştiğinde, 301 yönlendirmesi tarayıcılara ve botlara kaynağın kalıcı olarak taşındığını söyler. next.config.js dosyasında redirects anahtarı altına yönlendirmeler ekleyin. Bu, eski URL'nin içerik olmadan 200 kodu döndürmesini engeller.

5. Search Console uyarılarını izleyin ve harekete geçin

Soft 404'leri tespit etmek için Google Search Console'u sık sık kontrol edin. Hatalar birikmeden önce yenilerini ortaya çıkarmak için otomatik bir tarayıcı (crawler) kullanın. Her uyarıyı, altta yatan veri çekme mantığını doğrulamak için bir ipucu olarak değerlendirin.

Özetle

İçerik sunmazken 200 OK döndüren bir sayfa, SEO değerini sessizce tüketir. Next.js'te dinamik rotalar ve kontrol edilmeyen veri çekme işlemleri soft 404'leri yaygın hale getirir, ancak bunları ortadan kaldırabilirsiniz. Tarama bütçesini korumak, sıralamaları muhafaza etmek ve ziyaretçileri sitede tutmak için notFound kullanın, yararlı bir özel 404 sayfası oluşturun, yetim rotaları budayın, 301 yönlendirmelerini yapılandırın ve Search Console'da tetikte kalın.