
🔗 Come resettare i permalink di WordPress: 3 modi per correggere un errore 404
Conosci la sensazione: apri un sito e vedi una schermata bianca con il temuto 404. La homepage si carica, il pannello di amministrazione funziona, ma l’articolo o la pagina in sé no. Controlli l’URL, salvi di nuovo il contenuto, svuoti la cache del plugin, niente aiuta.
Nove volte su dieci la causa sono le regole di riscrittura di WordPress corrotte. I permalink hanno smesso di funzionare e il CMS non riesce a capire quale contenuto mostrare a quell’indirizzo. Buone notizie: si può risolvere in un minuto, senza plugin né modifiche al codice.
Ecco tre metodi per resettare i permalink: dal più semplice (un paio di click nel pannello di amministrazione) all’intervento manuale nel database via phpMyAdmin. Dopo il reset l’errore 404 scompare e la struttura degli URL resta intatta.
💡 Panoramica rapida:
- Vai al pannello di amministrazione di WordPress e clicca «Salva modifiche» nella pagina Permalink.
- Aggiungi una riga di codice al file functions.php del tema, ricarica il sito e rimuovi la riga.
- Svuota il campo rewrite_rules nella tabella wp_options via phpMyAdmin.
- Verifica il risultato: apri la pagina problematica e conferma che il 404 è sparito.
Cosa sono i permalink e perché devi resettarli
I permalink sono URL leggibili per pagine e articoli di WordPress. Invece di ?p=123 vedi /blog/how-to-reset-permalinks/. La trasformazione è gestita dal meccanismo delle regole di riscrittura, un insieme di regole che il CMS memorizza nel database e (con certe impostazioni) nel file .htaccess.
Quando si aggiunge un nuovo tipo di contenuto, si cambia la struttura dei link o dopo una migrazione del sito, le regole di riscrittura potrebbero non aggiornarsi automaticamente. WordPress continua a usare le vecchie regole in cache e una pagina che esiste fisicamente restituisce 404. Un flush forza la ricostruzione delle regole di riscrittura da zero: cancella le regole memorizzate e genera quelle correnti.
Non si tratta di «cancellare» i permalink; la struttura URL definita nelle impostazioni resta invariata. Cambia solo la cache delle regole interne di instradamento. L’operazione è completamente sicura: temi, plugin e contenuti non vengono toccati.
Metodo 1. Dal pannello di WordPress
Il metodo più rapido e sicuro è il reset dal pannello di amministrazione. Usalo quando la dashboard è accessibile.
- Accedi alla console di WordPress:
your-site.com/wp-admin. - Vai a Impostazioni → Permalink.
- Non modificare nulla nelle impostazioni, scorri semplicemente la pagina verso il basso.
- Clicca il pulsante blu «Salva modifiche».

WordPress ricostruirà in silenzio le regole di riscrittura e aggiornerà .htaccess (se utilizzato). Non comparirà alcuna notifica di successo; apri semplicemente la pagina problematica in una nuova scheda del browser e verifica se l’errore è sparito.
Perché funziona? Quando clicchi «Salva modifiche» il CMS chiama la funzione interna flush_rewrite_rules(), la stessa che gli sviluppatori usano nel codice. L’unica differenza è il modo in cui viene attivata: qui clicchi con il mouse invece di scrivere PHP.
Questo metodo risolve il problema nella stragrande maggioranza dei casi. Se non ha funzionato, passa al metodo 2.
Metodo 2. Via il file functions.php del tema
Se il pannello di amministrazione non si carica o il pulsante «Salva» non ha prodotto risultati, resetta le regole in modo programmatico. Ti servirà accesso ai file del sito: via FTP, dal file manager dell’hosting o dall’editor temi integrato.
Importante: flush_rewrite_rules() è un’operazione onerosa. Ricostruisce l’intera struttura URL e rallenta sensibilmente il sito se chiamata a ogni richiesta. Perciò aggiungeremo la funzione una volta sola, ricaricheremo il sito e rimuoveremo subito la riga.
- Apri il file
functions.phpdel tema attivo. Percorso:/wp-content/themes/your-theme/functions.php. - Alla fine del file, prima del
?>di chiusura (se presente), aggiungi una riga:
1 flush_rewrite_rules();
- Salva il file.
- Ricarica una pagina qualsiasi del sito nel browser; la funzione verrà eseguita alla prima richiesta.
- Riapri
functions.phpe cancella la riga che hai aggiunto. Questo passaggio è obbligatorio.

La funzione è stata eseguita una volta, le regole sono state ricostruite, il codice è stato rimosso e il sito funziona normalmente senza carichi extra. Gli sviluppatori di plugin usano lo stesso approccio: flush_rewrite_rules() viene agganciata all’hook di attivazione, non a ogni richiesta.
Un’alternativa per chi preferisce non toccare direttamente functions.php: il plugin Code Snippets. Crea un nuovo snippet con lo stesso codice, eseguilo una volta (il pulsante «Esegui») e cancellalo. Il risultato è identico.
Metodo 3. Via phpMyAdmin, reset diretto delle regole nel database
Il livello più profondo è svuotare manualmente le regole di riscrittura direttamente nella tabella wp_options. Usalo quando non hai accesso né al pannello di amministrazione né ai file del tema (per esempio, una schermata bianca della morte su tutto il sito tranne che sul database).
Assicurati di fare un backup del database prima di qualsiasi modifica in phpMyAdmin. Una singola azione sbagliata nell’editor SQL può danneggiare il sito in modo irreversibile.
- Apri phpMyAdmin dal pannello di controllo del tuo hosting (cPanel, ISPmanager, DirectAdmin) nella sezione «Database».
- Nella colonna di sinistra seleziona il database del tuo sito WordPress.
- Vai alla scheda SQL nel menu in alto.
- Incolla la query nel campo di testo e clicca «Esegui»:
1 SELECT * FROM wp_options WHERE option_name = 'rewrite_rules'
- I risultati mostreranno una singola riga. Clicca «Modifica» (l’icona della matita) accanto ad essa.
- Trova il campo
option_valueche contiene un lungo testo con dati serializzati. Seleziona tutto il contenuto del campo e cancellalo, poi salva.

Al successivo caricamento della pagina WordPress rileverà il valore vuoto di rewrite_rules, capirà che non ci sono regole e le rigenererà automaticamente. Non devi eseguire nient’altro.
Nota: in alcune configurazioni di hosting il prefisso delle tabelle potrebbe essere diverso da wp_. Se il tuo prefisso è differente (per esempio, wpxy_), sostituisci wp_options con wpxy_options. Puoi verificare il prefisso nel file wp-config.php, alla riga $table_prefix.
Video: reset dei permalink nella pratica
Se preferisci guardare invece di leggere, questo video mostra l’intero processo di reset dei permalink con il primo metodo, dall’accesso al pannello di amministrazione alla verifica del risultato:
⁉️🤔 Domande frequenti
I miei URL spariranno dopo il reset dei permalink?
No. Un flush non modifica la struttura dei link definita in «Impostazioni → Permalink». Ricostruisce solo la cache delle regole interne di instradamento. Tutti i tuoi indirizzi come
/blog/,/product/e/category/rimarranno esattamente gli stessi. L’eccezione è se hai cambiato manualmente la struttura nelle impostazioni prima di salvare; in quel caso gli URL saranno ricostruiti secondo il nuovo modello.
Devo installare un plugin per resettare i permalink?
Per un’operazione una tantum, assolutamente no. I tre metodi sopra coprono tutti gli scenari senza software aggiuntivo. Plugin come Rewrite Rules Inspector hanno senso solo se registri regolarmente tipi di contenuto e tassonomie personalizzate via codice e vuoi vedere lo stato delle regole in tempo reale. Per una semplice correzione del 404 è sproporzionato.
Il reset dal pannello di amministrazione non ha funzionato. E adesso?
Verifica se il file
.htaccessviene sovrascritto da un altro plugin (cache, sicurezza, SEO). Disattiva temporaneamente i plugin sospetti e ripeti il reset. Se ancora non funziona, passa al metodo 2 (PHP); è garantito che chiami la stessa funzioneflush_rewrite_rules()bypassando qualsiasi filtro dell’amministrazione.
Posso resettare le regole via WP-CLI?
Sì, se WP-CLI è installato sul server il comando
wp rewrite flushfa esattamente la stessa cosa dalla riga di comando. È il metodo più veloce per gli sviluppatori che lavorano via SSH. Viene eseguito all’istante, non richiede l’apertura del browser e non lascia tracce nel codice del tema.
Cosa devo fare se l’errore 404 persiste dopo il reset?
La causa non sono i permalink. Verifica tre cose: (1) se la pagina o l’articolo stesso è stato fisicamente cancellato, (2) se lo slug è in conflitto con altri contenuti o una tassonomia, (3) se le richieste sono bloccate da un file
.htaccesscon regole di reindirizzamento errate. In quest’ultimo caso rinomina temporaneamente.htaccessin.htaccess.bak, salva i permalink dal pannello di amministrazione (WordPress creerà un nuovo.htaccess) e verifica di nuovo.
Hai resettato i link, e ora?
Hai eseguito il reset con uno dei tre metodi e la pagina si è aperta. Ottimo. Ma se un 404 è comparso una volta, può tornare: dopo l’aggiornamento di un plugin, un cambio di tema o modifiche ai tipi di contenuto personalizzati. Aggiungi questa guida ai preferiti; ormai conosci a memoria il primo metodo (il pulsante «Salva» nel pannello di amministrazione) e puoi completarlo in dieci secondi.
E la regola principale quando si lavora con il database: prima di qualsiasi intervento, fai un backup. phpMyAdmin non perdona gli errori, ma un backup del database riporta in vita il sito in un paio di minuti.



