Le Friendly URL sono attive, ma i link ai prodotti mostrano ancora index.php?id_product=12 – oppure ogni percorso leggibile restituisce 404. La riscrittura url prestashop funziona solo quando il toggle nel Back Office, il file rewrite nella root (Apache) e le regole del web server sono allineati. Questa è una checklist in 5 passi: individuare il sintomo, confermare l’impostazione del negozio, sistemare il livello server, verificare un URL, poi ripulire duplicati e vecchi 404.
Il consiglio generico «attiva Friendly URL» si trova facilmente in un chatbot. Ciò che di solito fa perdere ore è applicare la correzione sbagliata per il proprio sintomo – oppure saltare il controllo di verifica dopo ogni passaggio. Seguire l’elenco in ordine. Le etichette ufficiali sono in Shop Parameters → Traffic nella documentazione PrestaShop 9. Prima di modificare la configurazione del server, eseguire un backup completo di PrestaShop.
Passaggio 1 – Individuare cosa non funziona
Aprire una pagina prodotto in una finestra privata e annotare quale caso si presenta. Non saltare questo passaggio – i tre casi richiedono correzioni diverse.
- A – URL ancora brutti. La barra degli indirizzi mostra ancora
id_product,id_categoryocontroller=dopo aver attivato Friendly URL. PrestaShop non emette link riscritti (oppure la cache serve una pagina vecchia). - B – URL leggibili con 404. I link sembrano corretti (
/categoria/slug-prodotto) ma ogni percorso leggibile restituisce Pagina non trovata. Il negozio genera gli slug; il web server non li instrada verso PrestaShop. - C – Funziona solo su un dominio. Il negozio principale va bene; un dominio multistore, un sottodominio o un negozio in sottocartella fallisce. Spesso è un problema di URL del negozio / DNS / document root – non un secondo bug Friendly URL. Consultare in parallelo la nostra guida al multistore PrestaShop insieme a questa checklist.
Verifica: si riesce a indicare A, B o C prima di toccare Apache o Nginx.
Passaggio 2 – Confermare Friendly URL nel Back Office

- Andare in Parametri del negozio → Traffico e SEO.
- Aprire Configurazione URL.
- Impostare Friendly URL su Sì e salvare.
- Svuotare la cache di PrestaShop (Parametri avanzati → Prestazioni) e ritestare lo stesso prodotto in una finestra privata.
Su Apache, salvando questa pagina si dovrebbe creare o aggiornare il file .htaccess nella root con le regole rewrite di PrestaShop. Se il file manca, è vuoto o è più vecchio dell’ultimo salvataggio, PHP non può scrivere nella root del negozio – sistemare proprietà e permessi prima di inseguire i moduli.
Su Nginx, il toggle da solo non installa mai le regole rewrite. Serve comunque il Passaggio 3.
Verifica (caso A): dopo lo svuotamento cache, i nuovi link HTML usano gli slug (anche se quegli slug restituiscono ancora 404 – diventa il caso B). Verifica (caso B/C): Friendly URL è Sì e resta Sì dopo il ricaricamento.
Passaggio 3 – Sistemare il livello server (Apache o Nginx)
Per procedere con la riscrittura url prestashop, controllare Parametri avanzati → Informazioni → Informazioni sul server (oppure chiedere all’hosting). Seguire solo il ramo che corrisponde al proprio server.
Se si usa Apache
- Abilitare
mod_rewrite(spesso già attivo). - Confermare che la document root del negozio abbia un
.htaccessleggibile aggiornato da PrestaShop all’ultimo salvataggio SEO. - AllowOverrides deve consentire le direttive rewrite per quella directory.
- Le installazioni in sottocartella richiedono un
RewriteBasecoerente. - Regole personalizzate sopra il blocco di PrestaShop possono interrompere la riscrittura – spostare temporaneamente gli extra sotto la sezione PrestaShop per testare.
- Dopo una modifica manuale, disattivare e riattivare Friendly URL una volta e salvare così PrestaShop riscrive la propria sezione, poi reinserire solo le righe personalizzate ancora necessarie.
Verifica: l’URL prodotto leggibile restituisce HTTP 200 con il prodotto corretto (non la pagina 404 predefinita dell’host).
Se si usa Nginx

Nginx ignora .htaccess. Modificare il blocco server del sito (spesso in /etc/nginx/sites-available/):
- Aggiungere l’esempio rewrite Nginx attuale dalla documentazione Nginx PrestaShop 9 (mantenere la root reale e il socket PHP-FPM).
- Eseguire
nginx -t. - Se il test passa, ricaricare:
systemctl reload nginx(oppure l’equivalente nel pannello dell’hosting).
Se un chatbot ha incollato un esempio vecchio, sostituirlo con il blocco ufficiale per la propria versione major. Percorsi e righe try_files cambiano nel tempo; snippet da forum di anni fa sono una causa frequente del caso B.
Verifica: come su Apache – pretty URL → 200 → prodotto corretto. Se un CDN o un reverse proxy erano davanti mentre tutto era rotto, svuotarne la cache una volta così smette di servire 404 in cache.
Passaggio 4 – Verificare la riscrittura url prestashop da capo a fine
Non fermarsi a «i link nel menu sembrano belli». Eseguire questa verifica rapida su un prodotto:
- Finestra privata: aprire il prodotto dall’elenco categoria.
- La barra degli indirizzi mostra un percorso con slug, non solo
id_product. - Copiare quell’URL leggibile, aprirlo in una nuova scheda: HTTP 200, stesso prodotto.
- Opzionale: richiedere uno slug errato noto – dovrebbe comparire il tema 404 del negozio, non una pagina vuota del web server che non ha mai raggiunto PrestaShop.
Se il Passaggio 4 fallisce solo su un secondo dominio mentre il dominio principale passa, tornare al caso C (URL multistore / DNS / document root) prima di modificare di nuovo le regole rewrite.
Verifica: un prodotto supera il clic dall’elenco + il ricaricamento diretto dell’URL leggibile.
Passaggio 5 – Canonical e 404 residui
Quando la riscrittura url prestashop funziona, completare il lato SEO così i motori di ricerca smettono di dividere l’autorità SEO tra duplicati e percorsi morti.
- In Parametri del negozio → Traffico e SEO, impostare Reindirizza all’URL canonico su 301 Moved Permanently su un negozio live.
- Controllare i moduli di terze parti che aggiungono URL di elenchi o blog – servono canonical coerenti anche lì.
- Dopo rinomina slug, spostamenti di categoria o cambio dominio, aggiungere 301 dai vecchi percorsi (oppure ripristinare l’entità). Cambiare schema URL senza redirect brucia posizionamenti già conquistati.
- Inviare una sitemap aggiornata così i crawler rilevano gli URL preferiti – vedere la nostra guida alla sitemap PrestaShop.
Usare la copertura Search Console (oppure i log di accesso) per elencare i percorsi 404 reali che colpiscono ancora il server. Correggerli con redirect o ripristini di contenuto – la riscrittura da sola non farà rivivere pagine CMS eliminate.
Verifica: l’opzione canonical è 301; un percorso prodotto alternativo di prova reindirizza; i vecchi slug noti che contano sono reindirizzati o intenzionalmente rimossi.
Riepilogo rapido dei 5 passaggi
- Individuare il sintomo (A brutti / B pretty 404 / C solo un dominio).
- Confermare Friendly URL Sì + svuotamento cache (+
.htaccessscrivibile su Apache). - Sistemare
mod_rewrite/.htaccesssu Apache o le regole del blocco server su Nginx. - Verificare un prodotto: link leggibile + ricaricamento diretto = 200.
- Impostare canonical 301 e ripulire 404 residui / sitemap.
Se si ricorda una sola abitudine: dopo ogni modifica, ritestare lo stesso URL prodotto prima di aprire l’impostazione successiva. È così che la riscrittura url prestashop smette di essere un ciclo di tentativi a caso.
