Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🔗 Come riparare i permalink non funzionanti di WordPress

🔗 Come riparare i permalink non funzionanti di WordPress

Visiti un sito, cliccate su un link verso un articolo nuovo e invece del testo vedete una pagina bianca con "404 Page Not Found". Una scena familiare.

I Permalink in WordPress sono costruiti in modo semplice, ma si rompono con una facilità allarmante. Un plugin difettoso, un aggiornamento fallito o una modifica accidentale al file .htaccess e l'intero sito si trasforma in una raccolta di URL non funzionanti. Secondo il forum ufficiale di supporto WordPress, gli errori di struttura dei permalink sono tra i cinque problemi più frequenti.

Di seguito trovate un algoritmo di diagnosi e riparazione, dal rapido reset delle impostazioni alla modifica manuale delle configurazioni del server. Ogni passaggio è stato testato su siti reali. Niente panico.

💡 Panoramica rapida:

  • Reimpostate le impostazioni dei permalink nel pannello di amministrazione con un clic: per la maggior parte dei siti il problema scompare all'istante
  • Se il reset non ha funzionato, rinominate .htaccess e reimpostate di nuovo: WordPress creerà un file pulito con le regole di riscrittura corrette
  • Verificate i plugin per esclusione: disattivateli tutti insieme e riattivateli uno per uno dopo ogni reset dei permalink
  • Su server Apache, abilitate manualmente mod_rewrite e aggiungete AllowOverride All alla configurazione dell'host virtuale

Un permalink è un URL immutabile per un articolo, una pagina o una categoria. WordPress memorizza la struttura dei permalink nel database e serve URL "leggibili" tramite il modulo mod_rewrite del server web Apache. Un'interruzione in qualsiasi anello di questa catena produce un errore 404.

Installazione di un nuovo plugin. Alcuni plugin interferiscono con il meccanismo di formazione degli URL: riscrivono .htaccess, aggiungono le proprie regole di redirect o entrano in conflitto con estensioni già attive. I plugin SEO, le soluzioni di caching e i plugin di sicurezza sono in una zona a rischio particolare: lavorano tutti con gli URL a basso livello.

Aggiornamento del core, del tema o dei plugin. Un aggiornamento maggiore di WordPress o un cambio di versione PHP sull'hosting rende i vecchi plugin incompatibili. Il risultato è un conflitto che manda in crash le regole di riscrittura. Non potete saltare gli aggiornamenti di sicurezza, ma prima di ogni aggiornamento maggiore fate un backup e verificate la compatibilità su una copia di staging.

Spostamento di un sito su un nuovo dominio o server. La migrazione di WordPress è una delle cause più comuni di link non funzionanti. I percorsi assoluti cambiano, cambiano i dati serializzati nel database e le impostazioni del server web. Anche l'aggiunta di un certificato SSL dopo la migrazione può rompere i permalink, perché richiede la modifica di .htaccess per il redirect HTTP→HTTPS. Se di recente avete spostato un'installazione WordPress in una sottodirectory, controllate la struttura dei permalink subito dopo la migrazione.

Ripristino di un backup. Ripristinare un sito da un backup a volte resuscita anche vecchi problemi. Se il backup è stato fatto prima di configurare i permalink, gli errori 404 tornano. Nemmeno i plugin di backup più avanzati garantiscono un ripristino perfetto delle regole di riscrittura dopo migrazioni complesse.

File .htaccess corrotto. Il file .htaccess è il collegamento tra WordPress e Apache. Memorizza le direttive mod_rewrite responsabili degli URL "leggibili". Un plugin scrive spazzatura, cancellate accidentalmente il file via FTP e alcuni pannelli di hosting lo resettano quando si cambiano impostazioni. Senza un .htaccess funzionante, i permalink diventano ?p=123.

Abbiamo coperto le cause, ora passiamo alle soluzioni. Procedete in ordine: applicate ogni passaggio successivo solo se il precedente non ha funzionato.

Il metodo più rapido e sicuro. WordPress memorizza la struttura dei permalink nel database e, quando si salvano le impostazioni, rigenera le regole di riscrittura. Gli sviluppatori chiamano questo processo "flush delle rewrite rules".

Andate nel pannello di amministrazione, navigate su Impostazioni → Permalink:

Pagina delle impostazioni dei permalink nel pannello di amministrazione di WordPress

Passate temporaneamente a qualsiasi altra struttura, per esempio "Semplice" invece di "Nome articolo", e cliccate Salva modifiche. Poi ripristinate l'opzione originale e salvate di nuovo. Non dovete cambiare le impostazioni in modo permanente: ciò che conta è il fatto di salvare, che costringe WordPress a ricostruire le regole.

Ricaricate il sito e verificate se gli articoli si aprono. Funziona? Problema risolto. No, andate avanti.

Passaggio 2. Verificare e ricreare il file.htaccess

Se il reset non ha aiutato, l'origine del problema è quasi certamente in .htaccess. Il file si trova nella root del sito, nello stesso posto di wp-config.php e delle cartelle wp-content e wp-includes.

File .htaccess nella cartella principale di WordPress tramite client FTP

Collegatevi al server via FTP (FileZilla, WinSCP) o tramite il file manager nel pannello di hosting:

File manager di cPanel con la cartella principale di WordPress

Trovate .htaccess, cliccate con il tasto destro e rinominate in .htaccess_old. Non cancellate il file: potrebbe contenere regole critiche come il redirect HTTP→HTTPS o impostazioni di compressione:

Rinominare il file .htaccess in .htaccess_old via FTP

Dopo la rinomina, WordPress smette di vedere il vecchio file. Andate nel pannello di amministrazione e reimpostate i permalink come nel Passaggio 1: il sistema creerà un nuovo .htaccess pulito con le regole di riscrittura corrette. Conservate il vecchio file come copia di backup.

Passaggio 3. Trovare il plugin in conflitto

Il problema è comparso dopo aver installato un plugin specifico? Disattivatelo e reimpostate di nuovo i permalink: molto probabilmente è sufficiente.

Quando il colpevole è sconosciuto, usate il metodo per esclusione:

Disattivazione in blocco dei plugin nel pannello di amministrazione di WordPress

Disattivate tutti i plugin in una volta. Reimpostate i permalink. Verificate il sito: se funziona, il problema è in uno dei plugin. Riattivateli uno per uno, dopo ognuno reimpostate le impostazioni e verificate il sito. Il plugin dopo il quale i link si rompono di nuovo è la causa.

Sostituite il plugin in conflitto trovato con un'alternativa dalla directory di WordPress.org. Segnalate il problema allo sviluppatore: spesso sono a conoscenza di incompatibilità e possono suggerire una soluzione alternativa.

Passaggio 4. Configurare il server: AllowOverride e mod_rewrite

Se i passaggi precedenti non hanno aiutato e state usando Apache, il problema potrebbe essere nelle impostazioni dell'host virtuale.

Per prima cosa, assicuratevi che il modulo mod_rewrite sia abilitato. È ciò che trasforma gli URL "leggibili" in query che WordPress comprende. Verificatelo e attivatelo con il comando:

1sudo a2enmod rewrite

Se il modulo era già abilitato, apparirà un avviso: è normale. Ora riavviate Apache:

1sudo systemctl restart apache2

Su CentOS/RHEL il comando di riavvio è diverso:

1sudo systemctl restart httpd

Il secondo componente necessario è la direttiva AllowOverride All. Permette al file .htaccess di sovrascrivere la configurazione del server all'interno della directory del sito. Aprite il file di configurazione di Apache: su Ubuntu è /etc/apache2/sites-available/your-site.conf, su CentOS è /etc/httpd/conf/httpd.conf. Trovate la sezione <Directory> e portatela a questa forma:

1<Directory /var/www/your-site/>
2 AllowOverride All
3</Directory>

Sostituite il percorso /var/www/your-site/ con il percorso effettivo della cartella root di WordPress sul vostro server. Dopo la modifica, riavviate Apache con il comando sopra, poi reimpostate i permalink nel pannello di amministrazione.

Queste due azioni lato server, AllowOverride All più mod_rewrite, chiudono virtualmente tutti gli scenari rimanenti di permalink non funzionanti su Apache.

Se preferite guardare piuttosto che leggere, ecco una breve guida che mostra l'intero processo, dal reset delle impostazioni dei permalink al ripristino di .htaccess su un sito reale:

⁉️🤔 Domande frequenti

Perché l'errore 404 rimane dopo aver reimpostato i permalink?

Il reset tramite pannello di amministrazione riscrive le regole di riscrittura nel database. Ma se .htaccess è fisicamente inaccessibile in scrittura, permessi di accesso errati, WordPress non può aggiornare il file sul server. Verificate i permessi: di solito sono richiesti 755 per le directory e 644 per i file. Assicuratevi anche che .htaccess esista fisicamente: dopo la rinomina nel Passaggio 2, WordPress ne crea uno nuovo al reset successivo. Il reset in sé non cambia gli URL degli articoli esistenti e non rompe l'indicizzazione.

Posso semplicemente cancellare.htaccess?

No. Senza .htaccess su un server Apache, WordPress ricade su link "semplici" come ?p=123: questo è brutto e danneggia la SEO. L'ordine corretto: rinominate il vecchio file conservandone una copia di backup, poi reimpostate le impostazioni dei permalink nel pannello di amministrazione. WordPress creerà automaticamente un nuovo .htaccess. Non cancellate mai il file senza la possibilità di ripristinarlo: potrebbe contenere regole critiche di redirect HTTP→HTTPS o impostazioni di compressione.

Cosa fare se il sito è su Nginx?

Su Nginx non esiste il file .htaccess: tutte le regole di riscrittura sono scritte nella configurazione del server. Il blocco standard per WordPress: location / { try_files $uri $uri/ /index.php?$args; }. Verificate il file di configurazione del sito (di solito /etc/nginx/sites-available/your-site), aggiungete questo blocco alla sezione server e ricaricate Nginx: sudo systemctl reload nginx. I passaggi 1 e 3, reset dei link e verifica dei plugin, funzionano per Nginx esattamente come per Apache.

Quale plugin rompe più spesso i permalink?

Statisticamente, guidano i plugin SEO, che manipolano direttamente gli URL, e le soluzioni di caching: creano copie statiche delle pagine e possono "ricordare" la versione rotta. Al terzo posto ci sono i plugin di sicurezza che modificano .htaccess per bloccare richieste sospette. Dopo aver disabilitato un plugin di caching, assicuratevi di svuotare la cache del browser o aprite il sito in modalità incognito: una versione statica in cache con 404 potrebbe essere mostrata anche dopo la correzione.

Devo verificare l'integrità del database?

In rari casi, la causa è una tabella wp_options corrotta dove sono memorizzate le impostazioni dei permalink. Se nessuno dei metodi descritti ha aiutato, andate su phpMyAdmin, trovate la tabella wp_options e verificate la voce con option_name = 'rewrite_rules'. Se il valore sembra spazzatura o un oggetto serializzato corrotto, cancellate questa voce, poi reimpostate le impostazioni dei permalink nel pannello di amministrazione. WordPress ricreerà le regole di riscrittura da zero. La maggior parte degli utenti non avrà bisogno di questo passaggio: la stragrande maggioranza dei problemi si risolve con i metodi 1-3.

Cosa fare se nulla ha aiutato

Siamo passati da un semplice reset delle impostazioni alla configurazione del server Apache e Nginx. Per la maggioranza assoluta dei siti, uno di questi metodi risolve il problema.

Se gli errori 404 persistono, contattate il supporto tecnico del vostro hosting. Descrivete il problema ed elencate i passaggi che avete già eseguito. Spesso la causa è nelle specificità dell'ambiente di hosting: mod_rewrite disabilitato a livello di provider, configurazione PHP-FPM non standard o regole firewall personalizzate che bloccano le richieste a index.php. Il supporto dell'hosting vede il lato server a voi nascosto e risolve questi problemi in pochi minuti.

La regola principale da ricordare: reimpostate i permalink → rinominate.htaccess → reimpostate di nuovo. Questa sequenza di due azioni risolve la maggior parte dei casi e non richiede né conoscenze speciali né accesso al server. Iniziate con questa la prossima volta e molto probabilmente non avrete bisogno di andare oltre.