Menu
Domande Frequenti

Come risolvere i permalink di WordPress che non funzionano

Gianluca Gentile · · 6 min di lettura

Come risolvere i permalink di WordPress che non funzionano

Clicchi su un articolo del tuo sito e invece di vedere il contenuto appare un errore 404 “Pagina non trovata”? L’homepage funziona ma le pagine interne no? È uno dei problemi più comuni di WordPress e nella quasi totalità dei casi riguarda i permalink, ovvero la struttura degli URL del sito. La buona notizia è che si risolve quasi sempre in pochi minuti. In questa guida analizzo tutte le cause dei permalink rotti e ti mostro come risolverle.

Cosa sono i permalink e come funzionano

I permalink sono gli URL permanenti delle pagine e degli articoli del tuo sito. WordPress offre diverse strutture di permalink configurabili da Impostazioni → Permalink. La struttura più usata e consigliata per la SEO è “Nome articolo”, che genera URL come tuosito.it/titolo-articolo/.

Per funzionare, i permalink “belli” (qualsiasi struttura diversa da quella predefinita con ?p=123) richiedono che il server web riscriva internamente gli URL. Su server Apache, questa riscrittura avviene tramite le regole nel file .htaccess. Su server Nginx, avviene tramite la configurazione del virtual host. Se questa riscrittura non funziona, WordPress non riesce a tradurre l’URL “bello” nel contenuto corretto e restituisce un errore 404.

Soluzione 1: rigenerare i permalink

La soluzione più rapida e che risolve la maggior parte dei casi è semplicemente rigenerare le regole di riscrittura:

  1. Vai su Impostazioni → Permalink nella dashboard di WordPress.
  2. Non cambiare nulla nelle impostazioni.
  3. Clicca il pulsante “Salva modifiche” in fondo alla pagina.

Questo semplice passaggio forza WordPress a riscrivere il file .htaccess con le regole di riscrittura corrette. Se il problema era un file .htaccess corrotto, sovrascritto o mancante, questa operazione lo risolve immediatamente. Prova a visitare una pagina interna per verificare.

Soluzione 2: verificare il file .htaccess

Se rigenerare i permalink non basta, il problema potrebbe essere più profondo nel file .htaccess. Collegati via FTP alla cartella principale di WordPress e apri il file .htaccess. Il contenuto corretto per WordPress dovrebbe essere:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Se il file è vuoto, mancante o contiene regole diverse, sostituisci il contenuto con il blocco sopra. Se WordPress è installato in una sottocartella (es. /blog/), modifica RewriteBase / in RewriteBase /blog/ e l’ultima riga in RewriteRule . /blog/index.php [L].

Controlla anche che il file .htaccess sia scrivibile da WordPress (permessi 644 o 664). Se è in sola lettura, WordPress non può aggiornarlo quando salvi i permalink dalla dashboard.

Soluzione 3: verificare che mod_rewrite sia attivo

Su server Apache, i permalink richiedono il modulo mod_rewrite attivo. Su hosting condivisi è quasi sempre attivo di default, ma su VPS o server dedicati potrebbe essere disabilitato. Per verificare, crea un file info.php nella root del sito con il contenuto:

<?php phpinfo(); ?>

Visita tuosito.it/info.php e cerca “mod_rewrite” nella pagina. Se non è presente, devi abilitarlo. Su sistemi Debian/Ubuntu:

sudo a2enmod rewrite
sudo systemctl restart apache2

Inoltre, la configurazione di Apache deve permettere l’uso di .htaccess. Nel file di configurazione del virtual host, la direttiva AllowOverride deve essere impostata su All anziché None. Se è su None, Apache ignora completamente il file .htaccess e le regole di riscrittura non funzionano.

Ricorda: elimina il file info.php dopo la verifica. Lasciarlo accessibile espone informazioni sensibili sulla configurazione del server.

Soluzione 4: permalink su Nginx

Se il tuo sito è ospitato su un server Nginx, il file .htaccess non viene utilizzato — Nginx non lo supporta. Le regole di riscrittura devono essere configurate direttamente nel blocco server della configurazione Nginx. La regola necessaria per WordPress è:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Se WordPress è in una sottocartella:

location /blog/ {
    try_files $uri $uri/ /blog/index.php?$args;
}

Dopo aver modificato la configurazione, ricarica Nginx con sudo nginx -t && sudo systemctl reload nginx. Su hosting gestiti con Plesk o pannelli simili, questa configurazione è solitamente automatica, ma vale la pena verificare se i permalink non funzionano.

Soluzione 5: conflitti con plugin

Alcuni plugin possono sovrascrivere o corrompere le regole di riscrittura. Plugin di cache, di sicurezza o plugin che modificano gli URL (come WPS Hide Login o custom permalink plugins) possono interferire con il funzionamento standard dei permalink.

Per verificare se un plugin è la causa:

  1. Disattiva tutti i plugin dalla dashboard (o rinomina la cartella wp-content/plugins via FTP).
  2. Rigenera i permalink (Impostazioni → Permalink → Salva modifiche).
  3. Verifica se i permalink funzionano.
  4. Se funzionano, riattiva i plugin uno alla volta, rigenerando i permalink dopo ogni attivazione, fino a identificare il plugin responsabile.

Soluzione 6: aggiornamento WordPress o migrazione

I permalink possono rompersi dopo un aggiornamento di WordPress, un cambio di tema o una migrazione del sito su un nuovo server. Dopo queste operazioni, è buona pratica rigenerare sempre i permalink come prima cosa.

Nel caso di una migrazione, il problema più comune è che il nuovo server usa una configurazione diversa. Se il vecchio server era Apache e il nuovo è Nginx, le regole .htaccess non funzioneranno e devi configurare le regole try_files nella configurazione Nginx. Se il sito è stato spostato da una sottocartella alla root (o viceversa), la RewriteBase nel .htaccess deve essere aggiornata di conseguenza.

Soluzione 7: permalink con caratteri speciali

Se solo alcuni articoli danno errore 404 mentre altri funzionano, il problema potrebbe essere nel singolo permalink. Caratteri speciali, accenti, punteggiatura insolita o slug molto lunghi possono causare problemi su alcuni server. In questo caso:

  1. Apri l’articolo o la pagina con il problema nella dashboard.
  2. Clicca su “Modifica” accanto al permalink.
  3. Semplifica lo slug: usa solo lettere minuscole, numeri e trattini. Evita accenti, caratteri speciali e slug più lunghi di 5-6 parole.
  4. Aggiorna l’articolo e verifica.

Quando il problema è più profondo

In rari casi, i permalink non funzionano per motivi legati alla configurazione del server che vanno oltre le soluzioni standard: moduli PHP mancanti, configurazioni di sicurezza restrittive del server, firewall che bloccano determinati URL pattern o problemi con il reverse proxy. Se hai provato tutte le soluzioni sopra senza successo, il problema è probabilmente a livello di configurazione server.

Se i permalink del tuo sito WordPress non funzionano e le soluzioni standard non risolvono il problema, il team di SoccorsoWP può diagnosticare la causa specifica analizzando la configurazione del tuo server e ripristinare il corretto funzionamento degli URL. Apri un ticket e risolviamo il problema insieme.

Condividi:

Lascia un commento