20 Eylül 2026
Nginx 404 Redirect Kuralları: return, rewrite ve error_page Nasıl Kullanılır?
Nginx üzerinde eski URL’leri doğru hedeflere yönlendirmek, 404 response’larını özel hata akışına almak ve redirect zincirlerinden kaçınmak için pratik rehber.

Nginx üzerinde eski veya değişmiş URL’leri yönetirken üç kavram sık karışır: return, rewrite ve error_page. Bunların hepsi URL akışını etkileyebilir ancak aynı işi yapmaz.
Basit redirect için return
Belirli bir URL’nin yeni adresi netse en okunabilir çözümlerden biri return kullanmaktır.
Örnek:
location = /old-page {
return 301 https://example.com/new-page;
}Kalıcı taşınma için 301 veya uygun durumda 308; geçici taşınma için 302 veya 307 düşünülebilir. Google Search Central kalıcı redirect’lerde 301 ve 308’i, geçicilerde 302 ve 307’yi açıkça ayırır.
rewrite ne zaman gerekir?
Bir URL desenini başka bir desenle eşleştirmeniz gerektiğinde rewrite daha esnektir.
Örneğin yüzlerce eski kategori URL’si aynı kurala göre yeni yapıya taşınıyorsa regex tabanlı eşleştirme mantıklı olabilir. Ancak gereksiz karmaşık regex’ler hem bakım maliyeti hem de yanlış redirect riski yaratır.
error_page bir redirect tablosu değildir
error_page, Nginx’in belirli hata kodları için nasıl davranacağını kontrol eder. Özel 404 sayfası göstermek veya internal location’a geçirmek için kullanılabilir. Her 404’ü tek bir hedefe 301 ile göndermek için kullanılmamalıdır.
Örneğin gerçek bir içerik bulunmuyorsa kullanıcıya özel tasarlanmış 404 sayfası gösterebilir, ancak response kodunu 404 olarak koruyabilirsiniz.
Redirect zincirlerinden kaçının
Şu yapı gereksizdir:
/old-a → /old-b → /new-c
Mümkünse doğrudan:
/old-a → /new-c
kullanılmalıdır. Zincirler ek request, gecikme ve bakım karmaşıklığı oluşturur.
Nginx’te tüm 404’leri ana sayfaya göndermek neden yanlış?
Bir URL gerçekten mevcut değilse ve eşdeğer bir hedef yoksa ana sayfaya toplu redirect kullanmak kullanıcı niyetini bozabilir. Arama motorları da ilgisiz redirect’leri beklediğiniz gibi değerlendirmeyebilir.
Doğru mantık:
Sayfa taşındıysa → ilgili yeni sayfaya redirect
Geçici olarak başka yerdeyse → temporary redirect
İçerik yok ve eşdeğer hedef yoksa → gerçek 404/410
Gerçek 404 trafiğini nasıl önceliklendirirsiniz?
Nginx access log’ları güçlüdür ancak yüksek trafikli sistemlerde milyonlarca kayıt arasından gerçek kullanıcı fırsatlarını çıkarmak zahmetli olabilir. no404 gibi bir katman, 404 taleplerini ürün odaklı bir akışa dönüştürerek hangi URL’lerin gerçekten ziyaret edildiğini ve hangilerinin yönlendirmeye değer olduğunu görünür hale getirebilir.
Sonuç
Nginx redirect stratejisinde return, net ve basit yönlendirmeler için; rewrite, desen tabanlı kurallar için; error_page ise hata response akışını yönetmek için kullanılmalıdır. En önemli prensip, her 404’ü redirect etmek değil yalnızca mantıklı bir yeni hedef bulunan eski URL’leri yönlendirmektir.
no404 ile Nginx arkasındaki uygulamalara gelen gerçek 404 taleplerini izleyerek hangi kuralların gerçekten gerekli olduğunu belirleyebilirsiniz.