403, 404'ten işe yarar biçimde ayrılır: sunucu istediğinizi bulmuştur. Sonra bir şey hayır demiştir. Bu da işi dört olasılığa indirir.
1. Dizin dosyası yok
İçinde index.php ya da index.html bulunmayan ve dizin listeleme kapalı olan bir klasöre yapılan istek 403 verir. Bu doğru davranıştır ve genelde bir dağıtımın tamamlanmadığı anlamına gelir.
ls -la /var/www/site/
2. Sunucu onu okuyamıyor
Web kullanıcısının okuyamadığı bir dosya reddedilir. İzin kipiyle birlikte sahibine de bakın — kip, sahibinden çok daha sık doğrudur.
namei -l /var/www/site/index.php
namei bütün yolu adım adım gezip her düzeydeki izinleri yazar. Ortada çalıştırma biti olmayan bir klasör, altındaki her şeyi engeller; gözden kaçan durum da tam olarak budur.
3. Bir kural onu reddediyor
grep -rn "deny\|Require all denied" /etc/nginx/sites-enabled/ .htaccess 2>/dev/null
Uzantıya ya da klasöre göre engelleyen güvenlik kuralları, kastedilen türden 403'tür. Ağa takılan sizin kendi dosyanızsa, kural fazla geniştir.
4. Bir güvenlik duvarı ya da WAF
403 sizin olmayan bir sayfayla geliyorsa, sunucunun önündeki bir şeydendir. Onun kendi kaydı, eşleşen kuralın adını verir.