Come risolvere l’errore 403 Forbidden in WordPress
L’errore 403 Forbidden è uno dei codici HTTP più frustranti per un proprietario di siti WordPress. Il server riceve la richiesta, la capisce, ma si rifiuta di eseguirla — stai cercando di accedere a qualcosa che il server considera vietato. L’errore può comparire su tutto il sito, solo su alcune pagine, solo nel pannello admin o durante il caricamento di file. In questa guida analizzo tutte le cause dell’errore 403 in WordPress e ti mostro come risolvere ciascuna.
Cosa significa l’errore 403
Il codice HTTP 403 significa letteralmente “Forbidden” (Vietato): il server ha compreso la richiesta ma rifiuta di autorizzarla. A differenza dell’errore 401 (Non autorizzato) che richiede autenticazione, il 403 indica che anche con credenziali valide l’accesso è negato. Le cause in WordPress sono quasi sempre legate a permessi dei file, regole del server web o plugin di sicurezza.
Causa 1: permessi dei file errati
La causa più frequente è un problema con i permessi dei file e delle cartelle. Se i permessi sono troppo restrittivi, il server web non può leggere i file necessari per mostrare la pagina. I permessi corretti per WordPress sono:
- Cartelle: 755
- File: 644
- wp-config.php: 640
I permessi possono cambiare dopo una migrazione, un aggiornamento mal riuscito, un restore da backup o un intervento di sicurezza. Per correggerli in massa via SSH:
find /percorso/wordpress/ -type d -exec chmod 755 {} ;
find /percorso/wordpress/ -type f -exec chmod 644 {} ;
Se non hai accesso SSH, molti client FTP permettono di cambiare i permessi cliccando con il tasto destro su file e cartelle. Inizia dalla cartella principale di WordPress e applica ricorsivamente.
Causa 2: file .htaccess corrotto
Un file .htaccess corrotto o con regole errate può bloccare l’accesso all’intero sito. Plugin di sicurezza, cache e SEO modificano il .htaccess per aggiungere le proprie regole, e un conflitto tra queste regole può generare un errore 403.
Per verificare se il .htaccess è la causa:
- Collegati via FTP alla root di WordPress.
- Rinomina il file .htaccess in .htaccess-backup.
- Prova ad accedere al sito.
- Se funziona, il problema era nel .htaccess. Vai su Impostazioni → Permalink e clicca “Salva modifiche” per rigenerare un .htaccess pulito con le sole regole di WordPress.
- Se hai bisogno delle regole personalizzate, aggiungile una alla volta per identificare quale causa il conflitto.
Causa 3: plugin di sicurezza
I plugin di sicurezza come Wordfence, Sucuri, iThemes Security e All In One WP Security sono progettati per bloccare l’accesso a chi considerano una minaccia. Ma a volte bloccano anche il proprietario legittimo del sito:
- Ban dell’IP: troppi tentativi di login falliti o comportamenti sospetti possono far finire il tuo IP nella blacklist del plugin.
- Regole del firewall troppo aggressive: alcune regole bloccano interi range di IP o user agent legittimi.
- Protezione di directory: plugin che proteggono wp-admin o wp-includes possono bloccare richieste AJAX necessarie per il funzionamento del sito.
Per risolvere, rinomina la cartella del plugin di sicurezza via FTP (es. wordfence → wordfence-disabled). Se il sito torna accessibile, riattiva il plugin dalla dashboard e rivedi le impostazioni del firewall riducendo l’aggressività delle regole.
Causa 4: protezione hotlink o ModSecurity
Alcuni hosting attivano di default la protezione hotlink, che impedisce ad altri siti di incorporare direttamente le tue immagini e risorse. Se mal configurata, questa protezione può bloccare anche le risorse necessarie al tuo stesso sito, generando errori 403 sulle immagini o sui file CSS/JS.
ModSecurity è un firewall per applicazioni web (WAF) installato a livello server su molti hosting. Le sue regole possono bloccare richieste legittime che assomigliano a tentativi di attacco — ad esempio, un articolo che contiene codice HTML nel testo o un form con caratteri speciali. Se l’errore 403 appare solo su determinate azioni (salvataggio di un articolo, invio di un form), ModSecurity è il sospettato principale.
Per verificare, controlla il log degli errori del server (se accessibile) o contatta il supporto del tuo hosting. Su Plesk puoi controllare i log di ModSecurity in Domini → il tuo dominio → Log e filtrare per “modsecurity”.
Causa 5: indice di directory mancante
Se cerchi di accedere a una directory senza un file indice (come index.php o index.html) e il server è configurato per non mostrare l’elenco dei file, restituisce un errore 403. Questo accade solitamente quando il file index.php di WordPress è stato cancellato o rinominato accidentalmente.
Verifica che nella root di WordPress siano presenti i file index.php e wp-login.php. Se mancano, scarica una copia fresca di WordPress da wordpress.org e carica i file mancanti via FTP. Non devi reinstallare WordPress — basta ripristinare i file core.
Causa 6: protezione IP nel pannello hosting
Alcuni pannelli di hosting permettono di limitare l’accesso a wp-admin a indirizzi IP specifici. Se il tuo IP è cambiato (cosa comune con connessioni domestiche con IP dinamico), l’accesso viene bloccato con un 403.
Controlla nelle impostazioni di sicurezza del pannello hosting se esistono restrizioni per IP. Su Plesk, verifica in Siti web e domini → il tuo dominio → Impostazioni di Apache e Nginx la presenza di direttive Allow/Deny. Aggiorna con il tuo IP attuale o rimuovi la restrizione se non necessaria.
Errore 403 solo su upload di file
Se l’errore 403 compare solo quando cerchi di caricare file nella libreria media di WordPress, le cause sono specifiche:
- Permessi della cartella uploads: la cartella wp-content/uploads deve avere permessi 755. Il web server deve poter scrivere nelle sottocartelle.
- ModSecurity: il WAF può bloccare il caricamento di certi tipi di file o file che contengono stringhe considerate pericolose nei metadati.
- Limite dimensione file: se il file supera il upload_max_filesize di PHP, alcuni server restituiscono un 403 anziché un messaggio di errore più chiaro.
- Proprietario della cartella: su server Linux, la cartella uploads deve essere di proprietà dell’utente del web server (www-data su Apache/Nginx). Se il proprietario è diverso, il server non può scrivere.
Prevenire l’errore 403
Per ridurre il rischio di incontrare errori 403 in futuro:
- Non modificare manualmente .htaccess se non sai esattamente cosa stai facendo. Fai sempre un backup prima.
- Configura i plugin di sicurezza con moderazione: regole troppo aggressive causano più problemi di quanti ne risolvano.
- Monitora i permessi dopo aggiornamenti e migrazioni: verifica che i permessi siano corretti dopo ogni operazione che modifica i file.
- Conosci il tuo IP: se usi restrizioni basate su IP, aggiorna la whitelist quando il tuo IP cambia.
L’errore 403 persiste? Interveniamo noi
L’errore 403 può avere cause a livello server che richiedono analisi dei log e configurazioni non accessibili dalla dashboard di WordPress. Se hai provato le soluzioni sopra senza successo, il team di SoccorsoWP può diagnosticare la causa esatta e ripristinare l’accesso al tuo sito. Apri un ticket e risolviamo il problema.