Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
NGINX Teknik Rehberi

NGINX Ana Sayfa Açılıyor Ancak Diğer Sayfalar 404 Veriyor

NGINX 404 hatası çoğu zaman dosyanın gerçekten bulunmamasından değil, yanlış document root, server_name, root/alias kullanımı veya front-controller için eksik try_files kuralından kaynaklanır. Rehber WordPress, Laravel ve SPA senaryolarını ayrı ayrı ele alır.

404 Not Foundtry_filesroot vs aliasWordPressLaravel
root@sunucu:~SSH
2026/07/17 03:48:20 [error] 2307#2307: *912 open() "/usr/share/nginx/html/urun/42" failed (2: No such file or directory)
GET /urun/42 HTTP/2.0 404
İstek akışıİstemci, NGINX ve backend arasındaki kopma noktası
YapılandırmaEtkin server ve location bloklarının doğrulanması
Canlı teşhisLog, socket, port ve servis kontrolleri
Güvenli uygulamaTest, kontrollü reload ve sonuç doğrulaması
01
Teknik açıklama

NGINX 404 ve try_files hatası ne anlama gelir?

NGINX istek URI’sini etkin server ve location bloğunda bir dosya/dizin yoluna eşler. Yanlış eşleşme veya eksik fallback, uygulama route’u mevcut olsa bile 404 üretir.

Ana sayfa açılıp alt sayfalar 404 veriyorsa WordPress/Laravel gibi front-controller uygulamalarda location / içindeki try_files kuralı ilk şüphedir.

root yönergesi URI’yi belirtilen köke ekler; alias ise eşleşen location bölümünü farklı yolla değiştirir. Regex location ile alias kullanımı dikkatli yapılmazsa dosya yolu yanlış hesaplanır.

server_name eşleşmezse istek varsayılan server bloğuna düşebilir. Bu durumda doğru dosyalar sunucuda olsa bile başka document root üzerinden 404 görülür.

React/Vue gibi SPA uygulamalarında gerçek statik dosya bulunmadığında index.html’e fallback gerekir; API ve statik asset location’ları bu fallback’ten ayrılmalıdır.

404’ü tüm istekleri index.php veya index.html’e zorlayarak gizlemeyin; statik dosya, API ve gerçek olmayan URL davranışı ayrı kalmalıdır.

02
Log mesajları ve anlamları

404, try_files ve document root mesajları

E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.

8 kayıt
01kritik

open() ... failed (2: No such file or directory)

Anlamı: NGINX hesapladığı dosya yolunda kaynak bulamadı.

Muhtemel neden: Yanlış root/alias veya eksik dosya.

Logdaki tam yol ile gerçek deploy yolunu karşılaştırın.
02kritik

404 Not Found nginx

Anlamı: Eşleşen dosya veya fallback bulunamadı.

Muhtemel neden: try_files, location, server_name veya uygulama route yapılandırması.

nginx -T ile isteğin düştüğü server/location bloğunu belirleyin.
03uyari

Primary script unknown

Anlamı: FastCGI script yolu mevcut PHP dosyasına karşılık gelmiyor.

Muhtemel neden: SCRIPT_FILENAME, root veya alias uyumsuz.

fastcgi_param ve $document_root değerini inceleyin.
04uyari

File not found.

Anlamı: PHP-FPM script dosyasını bulamadı.

Muhtemel neden: NGINX ile PHP-FPM chroot/path farkı.

NGINX’in gönderdiği SCRIPT_FILENAME yolunu loglayıp doğrulayın.
05uyari

rewrite or internal redirection cycle

Anlamı: Fallback aynı URI’yi tekrar tekrar işliyor.

Muhtemel neden: Yanlış try_files veya error_page hedefi.

Fallback hedefini ve location tekrar eşleşmesini kontrol edin.
06bilgi

WordPress permalinks 404

Anlamı: Güzel bağlantılar index.php front-controller’a ulaşmıyor.

Muhtemel neden: Eksik try_files $uri $uri/ /index.php?$args.

Domain location / kuralını doğrulayın.
07bilgi

React refresh 404

Anlamı: Client-side route doğrudan sunucuda dosya olarak aranıyor.

Muhtemel neden: SPA index.html fallback eksik.

API/statik yolları hariç tutarak index.html fallback ekleyin.
08bilgi

Laravel route 404 nginx

Anlamı: İstek public/index.php’ye yönlenmiyor.

Muhtemel neden: Document root proje/public değil veya try_files eksik.

root yolunu public dizinine ayarlayın.

Bu ifadeyle eşleşen kayıt bulunamadı.

03
Güvenli ilk inceleme

SSH teşhis komutları ve hangi çıktıya bakılmalı?

Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.

Etkin server ve location blokları
nginx -T | grep -nE 'server_name|listen |root |alias |location |try_files|fastcgi_param SCRIPT_FILENAME'

İsteğin yol eşlemesini etkileyen tüm yönergeleri gösterir.

Gerçek dosya yolu
realpath /var/www/example
find /var/www/example -maxdepth 2 -type f | head -n 50

Deploy dizini ve beklenen giriş dosyalarını doğrular.

Host header testi
curl -sI -H 'Host: example.com' http://127.0.0.1/urun/42
curl -skI https://example.com/urun/42

Doğru server_name ile varsayılan vhost farkını gösterir.

404 logları
grep ' 404 ' /var/log/nginx/access.log | tail -n 50
tail -n 100 /var/log/nginx/error.log

404 URL’leri ve hesaplanan dosya yollarını karşılaştırır.

URI ve statik dosya testi
curl -skI https://example.com/
curl -skI https://example.com/olmayan-dosya.css
curl -skI https://example.com/uygulama-route

Front-controller ve gerçek 404 davranışını ayrı test eder.

Test ve reload
nginx -t && systemctl reload nginx

Yeni route yapılandırmasını güvenli uygular.

04
Barındırma ortamına göre

Ubuntu/Debian, AlmaLinux/CloudLinux ve Plesk kontrolleri

NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.

Ubuntu / Debian

NGINX 404 Not Found ve try_files için systemd, paket yolu ve journald kontrolleri.

  • Önce etkin NGINX yapılandırmasını ve servis durumunu doğrulayın.
  • Domain error logu ile systemd günlüğünü aynı zaman aralığında karşılaştırın.
  • Değişiklikten önce nginx -t, ardından kesintisiz reload uygulayın.
nginx -T | grep -nE 'server_name|root |alias |try_files' tail -n 100 /var/log/nginx/error.log

AlmaLinux / CloudLinux

NGINX 404 Not Found ve try_files için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.

  • NGINX ve ilgili backend servislerinin aktif durumunu kontrol edin.
  • SELinux AVC kayıtlarını ve güvenlik katmanlarını gözden geçirin.
  • Konfigürasyon testi geçmeden servisi yeniden başlatmayın.
nginx -T | grep -nE 'server_name|root |alias |try_files' ls -Zd /var/www/example 2>/dev/null

Plesk Obsidian

Plesk tarafından üretilen NGINX sanal host dosyalarında nginx 404 not found ve try_files kontrolü.

  • Domains > Apache & nginx Settings bölümündeki ek direktifleri inceleyin.
  • Elle oluşturulan ve Plesk tarafından üretilen dosyaları birbirinden ayırın.
  • Gerekirse yalnız ilgili domain için web yapılandırmasını yeniden oluşturun.
grep -R 'try_files\|root ' /var/www/vhosts/system/example.com/conf 2>/dev/null plesk repair web example.com -n
05
Güvenli çözüm sırası

NGINX 404 ve try_files çözüm sırası

Önce doğru sanal hostu, sonra fiziksel yolu ve son olarak uygulama fallback’ini doğrulayın.

1

Host ve URL eşleşmesini doğrulayın

İsteğin doğru server_name bloğuna düştüğünü kontrol edin.

curl -sI -H 'Host: example.com' http://127.0.0.1/
2

Logdaki hesaplanan dosya yolunu bulun

open() satırındaki yol gerçek deploy diziniyle karşılaştırılmalıdır.

tail -n 100 /var/log/nginx/error.log
3

Root ve alias kullanımını inceleyin

Location URI’sinin dosya yoluna nasıl çevrildiğini doğrulayın.

nginx -T | grep -nE 'location |root |alias '
4

Front-controller kuralını kontrol edin

WordPress/Laravel route’ları uygun index dosyasına fallback etmelidir.

nginx -T | grep -n 'try_files'
5

Statik, API ve uygulama route’larını ayrı test edin

Fallback’in gerçek olmayan assetleri 200 göstermediğini doğrulayın.

for p in / /api/health /olmayan.css /uygulama-route; do curl -sk -o /dev/null -w "$p %{http_code}\n" https://example.com$p; done
6

Test edip kontrollü reload uygulayın

Sözdizimi sonrası cache/CDN katmanını da temizleyip doğrulayın.

nginx -t && systemctl reload nginx
06
Belirtiye göre ayrım

Özel senaryolar ve karar ağacı

WordPress kalıcı bağlantılar 404

location / içinde index.php front-controller fallback’i gerekir.

nginx -T | grep -n 'try_files'
Laravel tüm route’lar 404

Document root proje kökü değil public dizini olmalıdır.

nginx -T | grep -n 'root '; test -f /var/www/proje/public/index.php && echo OK
React/Vue refresh 404

Client route için index.html fallback gerekir; API hariç tutulmalıdır.

curl -skI https://example.com/panel/ayarlar
Statik dosyalar 404

Alias, case sensitivity, deploy yolu ve build output kontrol edilir.

find /var/www/example -iname 'dosya.css'
Doğru domain başka siteyi gösteriyor

server_name eşleşmesi ve default_server sırası incelenir.

nginx -T | grep -nE 'listen .*default_server|server_name'
Plesk migration sonrası 404

Web yapılandırması ve document root domain bazında yeniden üretilir.

plesk repair web example.com -y

Kesinlikle yapmayın

  • Tüm 404’leri index.php’ye yönlendirip gerçek kayıp dosyaları 200 göstermeyin.
  • Root ve alias yönergelerini aynı mantıkla kullanmayın.
  • Varsayılan server bloğunu kontrol etmeden uygulama dosyalarını taşımayın.
  • WordPress için Apache .htaccess kuralını NGINX’e kopyalamayın.
  • Plesk üretilen vhost dosyalarını elle kalıcı değiştirmeyin.

Çözüm sonrası doğrulama

  • Doğru domain doğru server bloğuna düşmektedir.
  • Ana sayfa ve uygulama route’ları beklenen kodu döndürmektedir.
  • Gerçek olmayan statik dosya 404 olarak kalmaktadır.
  • PHP SCRIPT_FILENAME gerçek dosya yoluna karşılık gelmektedir.
  • Yeni error_log kayıtlarında yanlış document root yolu yoktur.
07
Resmî teknik kaynaklar

NGINX ve ilgili bileşenlerin resmî dokümantasyonu

08
İç SEO içerik kümesi

İlgili NGINX hata çözümleri

09
Sık sorulan sorular

NGINX 404 Not Found ve try_files hakkında merak edilenler

NGINX ana sayfa açılıyor ama diğer sayfalar neden 404?

Front-controller uygulamalarında location / içindeki try_files fallback’i eksik veya yanlıştır.

try_files ne yapar?

Belirtilen dosya ve dizinleri sırayla kontrol eder; bulunamazsa son parametredeki URI’ye iç yönlendirme veya hata kodu uygular.

root ile alias farkı nedir?

root istek URI’sini verilen yola ekler; alias eşleşen location yolunu farklı bir fiziksel yolla değiştirir.

WordPress için NGINX permalink kuralı nedir?

Genellikle location / içinde try_files $uri $uri/ /index.php?$args yaklaşımı kullanılır; mevcut yapı ve güvenlik kurallarına göre uyarlanmalıdır.

Laravel NGINX 404 nasıl çözülür?

Document root Laravel projesinin public dizini olmalı ve bulunmayan route’lar public/index.php’ye yönlenmelidir.

React refresh neden 404 verir?

Tarayıcı client-side route’u doğrudan istediğinde NGINX gerçek dosya arar. SPA için kontrollü index.html fallback gerekir.

server_name yanlışsa ne olur?

İstek başka veya varsayılan server bloğuna düşerek yanlış root üzerinden 404 ya da farklı site gösterebilir.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

Sunucunuzdaki hatayı kalıcı olarak çözelim

cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.

Sunucu Desteği Al WhatsApp
Top