Un 403 differisce da un 404 in un modo utile: il server ha trovato quello che chiedevi. Poi qualcosa ha detto di no. E questo restringe il campo a quattro cose.
1. Non c'è un file indice
Una richiesta a una cartella senza index.php né index.html, con l'elenco delle cartelle disattivato, dà 403. È il comportamento giusto e di solito significa che una pubblicazione non è arrivata in fondo.
ls -la /var/www/site/
2. Il server non riesce a leggerlo
Un file che l'utente del server web non può leggere viene rifiutato. Controlla il proprietario oltre ai permessi: i permessi sono giusti molto più spesso di quanto lo sia il proprietario.
namei -l /var/www/site/index.php
namei percorre l'intero percorso e stampa i permessi a ogni livello. Una cartella a metà strada senza il bit di esecuzione blocca tutto ciò che sta sotto, ed è proprio il caso che sfugge.
3. Una regola lo sta negando
grep -rn "deny\|Require all denied" /etc/nginx/sites-enabled/ .htaccess 2>/dev/null
Le regole di sicurezza che negano per estensione o per cartella sono il 403 voluto. Se a finire nella rete è un tuo file, la regola è troppo larga.
4. Un firewall o un WAF
Se il 403 arriva con una pagina che non è la tua, viene da qualcosa che sta davanti al server. È il suo stesso registro a nominare la regola che ha risposto.