Risolvere l’errore HTTP 405 Method Not Allowed

Un errore 405 Method Not Allowed significa che il server web ha compreso la tua richiesta ma ha rifiutato il metodo HTTP che hai usato. Una richiesta GET ha raggiunto un endpoint che accetta solo POST; un plugin di sicurezza ha bloccato le chiamate PUT dall’editor a blocchi; una regola .htaccess ha rimosso DELETE. Il server sa cosa vuoi, ma non lo elaborerà in quel modo.

Risposta rapida: In WordPress, la causa più comune di un errore 405 è un plugin di sicurezza che blocca le chiamate PUT o DELETE dall’editor Gutenberg, oppure una direttiva LimitExcept in .htaccess. La prima soluzione più rapida è Impostazioni > Permalink > Salva le modifiche per rigenerare .htaccess. Se questo non aiuta, disattiva i plugin di sicurezza uno alla volta per isolare il blocco. Nei nostri test, ripristinare .htaccess tramite Impostazioni > Permalink > Salva risolve l’errore nella maggior parte dei casi in cui non è installato alcun plugin di sicurezza.

Errore 405 Not Allowed su Nginx

Dove appare l’errore 405?

Usa questa tabella per individuare la causa più probabile prima di lavorare su ogni passaggio.

Dove appare l’errore Causa più probabile
L’editor a blocchi non riesce a salvare un articolo Plugin di sicurezza che blocca PUT o DELETE
Modulo di contatto o di checkout sul front-end Plugin del modulo che invia il metodo HTTP sbagliato
Endpoint della REST API o comando WP-CLI Regola LimitExcept in .htaccess
Intero sito o aree di amministrazione specifiche Direttiva Nginx o Apache a livello di server

Prima di apportare qualsiasi modifica, esegui il backup del tuo sito web in modo da poter tornare rapidamente indietro se qualcosa va storto. WP Staging offre backup automatici con ripristini in un clic. Consulta la guida al backup e al ripristino per le istruzioni di configurazione.

Configurazione errata di LimitExcept in .htaccess

Una direttiva LimitExcept in .htaccess limita quali metodi HTTP il server accetta su un determinato percorso. Un esempio comune:

<LimitExcept GET POST>
  Deny from all
</LimitExcept>

Questo blocca PUT, DELETE e PATCH, che la REST API di WordPress e Gutenberg utilizzano per gli aggiornamenti e le operazioni in blocco. Un file .htaccess a cui un plugin di sicurezza o una modifica manuale ha aggiunto questa direttiva è spesso il colpevole quando l’errore 405 appare per la prima volta dopo l’installazione di un plugin o una modifica alla configurazione di cPanel.

Diagnosi: Controlla il log degli errori del server per righe contenenti 405 (Method Not Allowed) sui percorsi della REST API (/wp-json/...). Se le trovi lì, una regola LimitExcept è quasi certamente la causa.

Soluzione: ripristina il file .htaccess

Accedi al cPanel del tuo hosting e apri il File Manager.

File Manager di cPanel

Naviga fino alla directory principale della tua installazione WordPress, di solito public_html o www.

Cartella public_html

Individua il file .htaccess nella directory principale.

Visualizza il file .htaccess

Fai clic con il tasto destro sul file .htaccess e seleziona Scarica per salvare un backup sul tuo computer.

Scarica il file .htaccess

Fai di nuovo clic con il tasto destro sul file, scegli Rinomina e rinominalo in .htaccess.bak. Questo lo disabilita temporaneamente senza eliminarlo.

Rinomina il file .htaccess per risolvere l'errore 501

Con il vecchio .htaccess disabilitato, vai su Impostazioni > Permalink nella bacheca di WordPress e clicca su Salva le modifiche. WordPress rigenera un .htaccess pulito senza alcuna regola problematica.

Salva i permalink di WordPress per correggere l'errore HTTP 501 not implemented

Controlla il tuo sito. Se l’errore 405 è scomparso, apri il vecchio .htaccess.bak e confrontalo riga per riga con il nuovo file per trovare la direttiva LimitExcept. Rimuovila dal backup e rinominalo di nuovo in .htaccess, oppure mantieni la versione rigenerata.

Se usi Nginx, .htaccess non ha alcun effetto. Controlla nginx.conf per direttive limit_except o deny equivalenti nel blocco server o location del tuo sito.

Plugin di sicurezza che blocca i metodi HTTP

Dai ticket di supporto di WP STAGING, la causa più comune di un errore 405 in un’installazione WordPress funzionante è il firewall di un plugin di sicurezza che blocca le richieste PUT o DELETE dall’editor a blocchi. Plugin come Wordfence e Sucuri ti permettono di limitare quali metodi HTTP il server accetta. Quando bloccano PUT o DELETE, le richieste di salvataggio di Gutenberg falliscono con un errore 405 e l’editor mostra un errore di salvataggio generico.

Diagnosi: Disattiva temporaneamente il tuo plugin di sicurezza e prova a salvare di nuovo l’articolo. Se l’errore 405 scompare, il plugin è la causa.

Soluzione: individua il plugin che blocca

Accedi alla bacheca di WordPress e vai su Plugin.

Selezione plugin nel dashboard WordPress

Seleziona tutti i plugin attivi, apri il menu a discesa Azioni di gruppo in alto, scegli Disattiva e clicca su Applica.

Disattivare plugin per risolvere l'errore HTTP 501 not implemented in WordPress

Dopo aver disattivato tutti i plugin, controlla se l’errore 405 è scomparso. Se lo è, riattiva ogni plugin uno per uno, testando il tuo sito dopo ciascuno, finché l’errore non ricompare. Quello è il plugin che blocca la richiesta.

Una volta individuato, controlla le impostazioni del firewall o dei metodi HTTP del plugin. Per Wordfence, cerca sotto Firewall > All Firewall Options i metodi HTTP consentiti e verifica che PUT e DELETE siano inclusi. Per Sucuri, cerca nelle impostazioni Hardening eventuali restrizioni sui metodi HTTP.

Configurazione del server (Nginx e Apache)

Un errore 405 che persiste dopo aver ripristinato .htaccess e disattivato i plugin di solito indica la configurazione del server web. Su Apache, le direttive Limit e LimitExcept all’interno di un file di configurazione del virtual host possono bloccare i metodi su tutto il sito. Su Nginx, un blocco limit_except GET POST {} nel blocco server o location ha lo stesso effetto.

Diagnosi: controlla i log del server

I log di accesso registrano ogni richiesta con il codice di stato HTTP. I log degli errori catturano il motivo per cui il server ha rifiutato la richiesta. Cerca righe contenenti 405 o method not allowed vicino al percorso che ha restituito l’errore.

La maggior parte dei pannelli di controllo dell’hosting condiviso mostra i log in una sezione Log o Metriche. Su un VPS o un server dedicato, controlla /var/log/apache2/error.log o /var/log/nginx/error.log.

Soluzione: aggiorna la configurazione del server

Per Apache, individua il file di configurazione del virtual host del tuo sito (di solito in /etc/apache2/sites-enabled/) e cerca i blocchi <Limit> o <LimitExcept>. Aggiungi i metodi HTTP richiesti o rimuovi la restrizione.

Per Nginx, trova il blocco limit_except all’interno del blocco server del tuo sito e aggiungi i metodi mancanti, oppure rimuovi il blocco se la tua configurazione non lo richiede.

Dopo aver modificato la configurazione, ricarica il server:

# Apache
sudo systemctl reload apache2

# Nginx
sudo systemctl reload nginx

Sull’hosting condiviso, non puoi modificare direttamente la configurazione globale del server. Contatta il supporto del tuo host e descrivi i metodi HTTP bloccati e il percorso URL specifico che restituisce l’errore 405.

Restrizioni sui metodi della REST API di WordPress

WordPress utilizza la REST API per i salvataggi di Gutenberg, le operazioni di sincronizzazione dei plugin e i comandi WP-CLI. Se la REST API è disabilitata, oppure un hook di un plugin o di un tema rifiuta metodi HTTP specifici, vedrai errori 405 sui percorsi che iniziano con /wp-json/.

Nei nostri test, gli errori sui metodi della REST API nell’editor a blocchi sono più spesso causati da una combinazione di un filtro di autenticazione REST in un plugin o tema e dell’elenco dei metodi consentiti di un plugin di sicurezza. Abilitare la modalità debug mostra quale componente rifiuta la richiesta.

Soluzione: abilita la modalità debug di WordPress per rintracciare l’errore

Apri wp-config.php, cambia define('WP_DEBUG', false) in define('WP_DEBUG', true) e aggiungi anche define('WP_DEBUG_LOG', true) per scrivere gli errori in wp-content/debug.log. Salva il file.

Attiva debug.log e modalità debug di WordPress in wp-config.php

Riproduci l’errore 405, poi apri wp-content/debug.log e cerca errori di autenticazione della REST API o conflitti di filtri. Quando individui l’hook o il plugin responsabile, aggiorna le sue impostazioni o contatta l’autore del plugin.

Ripristina WP_DEBUG su false al termine della risoluzione dei problemi.

Per le istruzioni di configurazione, consulta come attivare il log di debug di WordPress.

Plugin del modulo di contatto che invia il metodo HTTP sbagliato

Alcuni plugin per moduli di contatto e di checkout inviano i dati tramite una richiesta GET a un endpoint che accetta solo POST, oppure usano un metodo non standard che il server non accetta. Questo produce un errore 405 sul front-end anziché nell’area di amministrazione.

Dal supporto di WP STAGING, questo schema si presenta quando l’aggiornamento di un plugin cambia l’URL dell’endpoint di invio senza aggiornare l’attributo del metodo del modulo. Il plugin inizia a inviare richieste al nuovo endpoint usando il vecchio metodo e il server restituisce l’errore 405.

Diagnosi: Apri i DevTools del browser (F12), vai alla scheda Rete e invia il modulo. Trova la richiesta che restituisce l’errore 405. Controlla la colonna Metodo: se mostra GET per un modulo che dovrebbe usare POST, o qualsiasi altro metodo inatteso, il plugin è configurato in modo errato.

Soluzione: Aggiorna prima il plugin alla sua ultima versione. Se l’errore persiste, controlla nelle impostazioni del plugin l’opzione per il metodo del modulo o per l’URL di invio e verifica che corrisponda a ciò che il server accetta. Se il plugin non ha tale impostazione, contatta l’autore del plugin fornendo il metodo della richiesta e l’URL dalla scheda Rete.

Risoluzione generale dei problemi

Se nessuna delle soluzioni specifiche per la causa descritte sopra ha risolto l’errore, segui questi passaggi nell’ordine indicato.

Ricarica la pagina

Un problema temporaneo del server o una cache del browser obsoleta possono produrre un errore 405 occasionale. Esegui un ricaricamento forzato con Ctrl + Shift + R su Windows o Command + Shift + R su macOS per forzare una nuova richiesta.

Verifica errori nell’URL

Ricontrolla l’URL per errori di battitura, barre extra o caratteri fuori posto. Un URL malformato può instradare verso un endpoint che non accetta il metodo che hai inviato.

Annulla eventuali modifiche recenti

Se l’errore 405 è apparso dopo l’aggiornamento di un plugin, di un tema o del core di WordPress, annulla quella modifica. Per i plugin, WP Rollback può ripristinare una versione precedente. Testa il tuo sito dopo ogni ripristino per confermare quale aggiornamento ha introdotto l’errore.

Ispeziona le modifiche recenti al database

Un plugin o un tema che scrive nel database può occasionalmente interferire con l’instradamento delle richieste. Per verificare la presenza di modifiche inaspettate:

  1. Accedi al cPanel e apri phpMyAdmin.
ottimizzare il database WordPress con phpMyAdmin in cPanel
  1. Seleziona il database associato alla tua installazione WordPress dalla barra laterale a sinistra.
Ispezionare le modifiche recenti al database per correggere 405 Method Not Allowed

Cerca tabelle orfane lasciate da plugin disinstallati di recente in wp_options e wp_usermeta. Rimuovi eventuali righe residue e verifica se l’errore 405 si risolve.

Passa a un tema predefinito

Un tema che registra in modo errato una route della REST API può produrre un errore 405 su quei percorsi. Passare a un tema predefinito incluso esclude questa possibilità.

Vai su Aspetto > Temi nella tua bacheca e attiva un tema WordPress predefinito.

Passaggio al tema predefinito per risolvere l'errore HTTP 501

Se l’errore 405 scompare con il tema predefinito attivo, il problema è nel tuo tema originale. Esamina eventuali chiamate personalizzate register_rest_route nel file functions.php del tema, oppure contatta l’autore del tema.

Cosa fare se la soluzione non funziona

Se l’errore 405 persiste dopo aver seguito tutte le sezioni sopra, una CDN o un reverse proxy posto tra il browser del visitatore e il tuo server potrebbe rimuovere o riscrivere il metodo HTTP prima che la richiesta raggiunga WordPress.

Verifica la presenza di un livello CDN o WAF. Il pannello di controllo del tuo hosting o la dashboard del tuo provider DNS di solito mostra se una CDN o un Web Application Firewall è attivo. In tal caso, controlla le sue regole del firewall per eventuali elenchi di metodi HTTP consentiti. I servizi CDN hanno spesso regole che permettono solo GET e POST, il che restituirà un errore 405 per PUT, DELETE o PATCH prima che la richiesta raggiunga WordPress.

Rivedi le impostazioni del load balancer. Se il tuo sito è dietro un load balancer, verifica che la configurazione del listener o del backend non stia rifiutando metodi HTTP non standard.

Bypassa temporaneamente il proxy per isolare la fonte. Se puoi instradare una richiesta di prova direttamente al tuo server di origine e l’errore 405 scompare, il proxy sta filtrando il metodo. Collabora con il tuo provider CDN o con l’amministratore di sistema per modificare l’elenco dei metodi consentiti.

Conclusione

Un errore 405 Method Not Allowed in WordPress ha un piccolo insieme di cause principali: una direttiva LimitExcept in .htaccess, un plugin di sicurezza che blocca i metodi della REST API, una regola di configurazione a livello di server, un plugin che invia il metodo HTTP sbagliato, oppure una CDN che filtra le richieste a monte. Affrontare ogni causa in ordine, iniziando dal ripristino di .htaccess, risolve il problema nella maggior parte dei casi.

Se hai bisogno di tornare indietro dopo una modifica fallita, la guida al backup e al ripristino di WP Staging illustra il ripristino in pochi clic.

Articoli correlati

Rene Hermenau

Autore: Rene Hermenau

Informazioni sull'autore: René Hermenau è il fondatore di WP STAGING. Si occupa di backup WordPress, staging, migrazioni, gestione dei database e flussi di deployment sicuri.