PrestaShop è una piattaforma e-commerce open source con una base installata concentrata in Europa — Francia, Spagna e Italia rappresentano oltre il 70% delle installazioni attive secondo i dati W3Techs. Sul totale dei CMS per e-commerce, la market share di PrestaShop si attesta intorno allo 0,8%, lontana da WooCommerce (68%) e Shopify (19%), ma con una community di sviluppatori attiva e un ecosistema di moduli che la rende una scelta concreta per merchant di fascia media.
Con il rilascio di PrestaShop 9.0 a giugno 2025 e il consolidamento della versione 8.x, l’architettura della piattaforma è cambiata in modo significativo rispetto alle versioni 1.6 e 1.7: Symfony 6.4, PHP 8.1–8.4, supporto nativo WebP/AVIF, URL routing ridisegnato. Questi cambiamenti hanno un impatto diretto sulle strategie di ottimizzazione SEO.
Questa guida copre le ottimizzazioni SEO tecniche specifiche per PrestaShop 8.x e 9.0 — dall’architettura URL alla gestione del crawl budget, dai dati strutturati alla performance. Ogni sezione include configurazioni operative, snippet di codice e riferimenti alla documentazione ufficiale. Se stai valutando anche Magento, consulta la guida SEO Magento. Per consigli SEO su e-commerce a prescindere dalla piattaforma, la guida per avviare un progetto eCommerce copre gli aspetti fondamentali.
Architettura URL e routing
La struttura degli URL è il primo intervento SEO su qualsiasi installazione PrestaShop. URL leggibili, brevi e privi di parametri superflui migliorano la comprensione da parte dei crawler e il CTR nelle SERP. Per un approfondimento sulla gestione dei parametri URL e SEO, inclusa la differenza tra URL rewrite e redirect HTTP, consulta le guide dedicate.
Attivare le Friendly URL
In PrestaShop 8.x e 9.0, le Friendly URL si attivano da Parametri Negozio → Traffico & SEO → URL del negozio. Una volta abilitate, gli URL passano da /product.php?id_product=123 a /nome-prodotto.html.
Nota: verifica che il modulo mod_rewrite sia attivo su Apache, o che le regole equivalenti siano configurate in Nginx. Senza rewrite engine funzionante, le Friendly URL generano errori 404.
Rimozione degli ID dalle URL
Di default, PrestaShop antepone l’ID numerico agli slug delle pagine (/123-nome-prodotto.html). Questo genera URL più lunghi e meno leggibili. Per rimuovere gli ID serve un modulo dedicato come Pretty URLs o PS IT Clean URLs. La rimozione degli ID è particolarmente importante sugli shop con migliaia di prodotti perché semplifica la struttura URL e migliora la leggibilità nelle SERP.
Nota: la rimozione degli ID richiede una fase di redirect mapping accurata. Ogni vecchio URL con ID deve restituire un redirect 301 verso il nuovo URL senza ID. Senza questo passaggio si perdono i segnali di ranking accumulati. Per capire quale redirect usare in ogni scenario, consulta la guida dedicata.
URL prodotto senza percorso categoria (PS 9)
PrestaShop 9.0 introduce una modifica importante: i product URL non includono più il percorso della categoria per default. Nelle versioni precedenti, un prodotto poteva avere URL del tipo /abbigliamento/scarpe/sneaker-bianca.html, generando URL multipli se il prodotto apparteneva a più categorie (e conseguente duplicazione).
In PS 9, l’URL diventa /sneaker-bianca.html — un singolo URL canonico per prodotto, indipendentemente dalla categoria. Questo risolve nativamente uno dei problemi storici di contenuto duplicato di PrestaShop.
Gestione prefisso lingua
Per shop multilingua, PS 9 permette di rimuovere il prefisso della lingua di default dall’URL. Se la lingua principale è l’italiano, l’URL sarà /prodotto.html invece di /it/prodotto.html, eliminando redirect superflui e accorciando gli URL per la lingua primaria. Le lingue secondarie mantengono il prefisso (/en/product.html, /fr/produit.html).
Canonical tag
Il canonical tag è attivo di default in PrestaShop 8.x e 9.0. Verifica che sia presente su tutte le tipologie di pagina — prodotti, categorie, pagine CMS, ricerca interna. Il canonical deve puntare alla versione pulita dell’URL, senza parametri di sessione, filtri o ordinamento.
Un errore comune in PrestaShop è il canonical autoreferenziale che include parametri di paginazione. La pagina 2 di una categoria (?page=2) deve avere il proprio canonical con il parametro, non puntare alla pagina 1. Per approfondire la gestione dello slash finale negli URL e le implicazioni SEO, leggi la guida dedicata.
Crawl budget e struttura del sito
PrestaShop genera una quantità significativa di URL parametrizzati — filtri, ordinamenti, paginazione, sessioni — che possono diluire il crawl budget. Su shop con oltre 10.000 URL, la gestione del crawl budget diventa un fattore critico per l’indicizzazione.
Robots.txt ottimale
PrestaShop genera un robots.txt dalla sezione Parametri Negozio → Traffico & SEO. Il file di default è troppo permissivo. Per una comprensione approfondita di come funziona il robots.txt, consulta la guida dedicata. Una configurazione ottimizzata per PrestaShop 8.x/9.0:
# Robots.txt ottimizzato per PrestaShop 8.x/9.0
User-agent: *
# Pagine di sistema e admin
Disallow: /admin*/
Disallow: /app/
Disallow: /cache/
Disallow: /classes/
Disallow: /config/
Disallow: /controllers/
Disallow: /download/
Disallow: /mails/
Disallow: /modules/
Disallow: /override/
Disallow: /src/
Disallow: /themes/
Disallow: /tools/
Disallow: /translations/
Disallow: /upload/
Disallow: /var/
Disallow: /vendor/
Disallow: /web/
# Parametri che generano duplicati
Disallow: /*?order=
Disallow: /*?orderby=
Disallow: /*?orderway=
Disallow: /*?n=
Disallow: /*?search_query=
Disallow: /*&order=
Disallow: /*&orderby=
Disallow: /*&orderway=
Disallow: /*&n=
# Carrello e account
Disallow: /carrello
Disallow: /ordine
Disallow: /il-mio-account
Disallow: /identita
Disallow: /indirizzi
Disallow: /cronologia-ordini
Disallow: /recupero-password
# Sitemap
Sitemap: https://www.example.com/1_index_sitemap.xml
Nota: adatta i path localizzati (/carrello, /ordine) alla lingua configurata nel tuo shop. In PrestaShop multilingua, ogni lingua ha slug diversi per le route di sistema. Per la gestione specifica dei disallow su URL parametrizzati nel robots.txt, leggi la guida approfondita.
Filtri faceted e layered navigation
I filtri di navigazione a faccette sono la prima causa di URL bloat in PrestaShop. Ogni combinazione di filtri (colore, taglia, prezzo, marca) genera un URL parametrizzato unico. Su un catalogo con 5.000 prodotti e 10 attributi filtrabili, il numero di URL potenziali esplode esponenzialmente.
PrestaShop 9.0 introduce il noindex automatico per le pagine generate dai filtri. Nelle versioni precedenti, questa configurazione richiede intervento manuale:
- Aggiungere
<meta name="robots" content="noindex, follow">alle pagine filtrate — per approfondire le differenze tra le direttive del meta robots e i casi d’uso di noindex vs none - Impostare il canonical delle pagine filtrate verso la categoria madre (senza filtri)
- Bloccare i pattern di URL filtrati nel robots.txt come ulteriore livello di protezione
- In Google Search Console, configurare i parametri URL per indicare a Google che i parametri di filtro non modificano il contenuto della pagina
XML Sitemap
PrestaShop include un modulo sitemap nativo (gsitemap) che genera la sitemap XML. Per shop di grandi dimensioni, il modulo crea automaticamente file sitemap multipli con un sitemap index. Configurazione consigliata:
- Includere solo pagine indicizzabili (prodotti attivi, categorie con prodotti, pagine CMS pubbliche)
- Escludere pagine con tag noindex
- Impostare la frequenza di aggiornamento in base alla tipologia (prodotti: weekly, categorie: weekly, CMS: monthly)
- Inviare la sitemap a Google Search Console e Bing Webmaster Tools
- Verificare periodicamente che il numero di URL in sitemap sia coerente con il numero di pagine indicizzate — per la validazione, consulta la guida su come verificare la correttezza di una sitemap XML
Se il modulo nativo non copre tutte le esigenze (per esempio, manca il supporto per hreflang nella sitemap), valuta moduli premium come SEO Expert o Advanced Sitemap Pro.
Performance e Core Web Vitals
La performance è un fattore di ranking confermato da Google dal 2021 attraverso i Core Web Vitals. PrestaShop, basato su un rendering server-side con Smarty (PS 8.x) o Twig (PS 9.0), ha il vantaggio di non dipendere da JavaScript per il rendering del contenuto principale. Tuttavia, le installazioni di default presentano criticità su LCP e INP che richiedono intervento.
Hosting e infrastruttura
La scelta dell’hosting incide direttamente su TTFB (Time To First Byte), che a sua volta influenza LCP. Per PrestaShop 8.x/9.0 la configurazione raccomandata:
| Componente | Requisito minimo | Raccomandato |
|---|---|---|
| Server | VPS con 2 core, 4 GB RAM | Cloud (DigitalOcean, Hetzner) con 4+ core, 8+ GB RAM |
| Web server | Apache 2.4 con mod_rewrite | Nginx con FastCGI cache |
| PHP | 8.1 | 8.3 o 8.4 con OPcache abilitato |
| Database | MySQL 5.7 / MariaDB 10.4 | MariaDB 10.11+ con query cache |
| Object cache | File system cache | Redis o Memcached |
| SSL | Let’s Encrypt | Let’s Encrypt o Cloudflare |
Configurazione cache di PrestaShop
In Parametri avanzati → Prestazioni, configura:
- Compilazione template: “Non ricompilare mai i file template” (in produzione)
- Cache: attiva, con file system o Redis come backend
- CCC (Combine, Compress, Cache): attiva per CSS e JavaScript
- Riduzione HTML: attiva dopo la compilazione Smarty/Twig
La funzione CCC concatena e minifica i file CSS e JS, riducendo il numero di richieste HTTP. Su PS 9.0, la pipeline di asset è stata modernizzata con supporto a Webpack, ma per la maggior parte degli shop la CCC nativa è sufficiente.
Ottimizzazione LCP
Il Largest Contentful Paint in PrestaShop è quasi sempre l’immagine hero del prodotto o il banner della categoria. Per ottimizzare:
- Pre-caricare l’immagine LCP con
<link rel="preload" as="image">nell’<head> - Servire immagini in formato WebP o AVIF (PS 9 ha supporto nativo, su PS 8 serve un modulo)
- Dimensionare correttamente le immagini per ogni breakpoint con
srcsetesizes - Evitare lazy loading sull’immagine above-the-fold (caricarla con
loading="eager"o senza attributo loading) - Configurare un CDN per gli asset statici (immagini, CSS, JS)
Ottimizzazione INP
Interaction to Next Paint misura la reattività dell’interfaccia. In PrestaShop, le criticità INP derivano principalmente da:
- Script di terze parti bloccanti (chat, tracking pixel, remarketing)
- Moduli con JavaScript non ottimizzato caricato globalmente
- Handler di eventi sul DOM pesanti (specialmente su pagine prodotto con molti attributi)
Identifica gli script problematici con il Performance panel di Chrome DevTools e valuta il caricamento differito (defer/async) o il caricamento condizionale (solo sulle pagine dove servono). Per approfondire le metriche CLS, consulta i 5 strumenti per analizzare il Cumulative Layout Shift.
Title tag, meta description e heading structure
Title tag e meta description sono i due elementi che determinano il click-through rate nelle SERP. PrestaShop offre il controllo completo su entrambi per ogni tipologia di pagina, ma la configurazione di default è spesso inadeguata. Per una panoramica completa sui tag HTML rilevanti per la SEO, consulta la guida dedicata.
Title tag: configurazione e pattern
Il title tag ottimale per un e-commerce include il nome del prodotto/categoria, un attributo differenziante e il brand. La lunghezza raccomandata è sotto i 60 caratteri (o 580 pixel) per evitare il troncamento nelle SERP.
Pattern consigliati per tipologia di pagina:
| Tipologia pagina | Pattern title | Esempio |
|---|---|---|
| Prodotto | [Nome Prodotto] – [Attributo] | [Brand] | Sneaker Air Max 90 – Bianche | NomeShop |
| Categoria | [Nome Categoria]: [Beneficio] | [Brand] | Scarpe Running: Spedizione Gratuita | NomeShop |
| Pagina CMS | [Titolo Pagina] | [Brand] | Guida alle Taglie | NomeShop |
| Home page | [Brand] – [Proposta di valore] | NomeShop – Abbigliamento Sportivo Online |
In PrestaShop, il meta title si configura nel tab SEO di ogni prodotto, categoria e pagina CMS. Per automatizzare la generazione su shop con migliaia di prodotti, il modulo SEO Expert permette di creare template dinamici con variabili come {product_name}, {category_name}, {price}.
Meta description con dati commerciali
La meta description non è un fattore di ranking diretto, ma influenza il CTR. Per le pagine prodotto, includere prezzo, disponibilità e un attributo differenziante può aumentare significativamente il click-through:
Esempio: Sneaker Air Max 90 Bianche a €129,90. Disponibili dalla taglia 38 alla 46. Spedizione gratuita sopra €50. Reso facile entro 30 giorni.
La lunghezza raccomandata è 150-160 caratteri (circa 920 pixel). Il campo meta description in PrestaShop supporta fino a 512 caratteri, ma Google tronca il testo visualizzato.
Heading hierarchy
La struttura heading in PrestaShop presenta criticità ricorrenti nei temi di default:
- H1 duplicati o mancanti nelle pagine categoria
- Nomi prodotto nelle card di listing marcati come H3 o H4 senza coerenza
- Widget sidebar con heading che interferiscono con la gerarchia del contenuto principale
Verifica la heading hierarchy di ogni template con un tool come l’estensione HeadingsMap per Chrome o con Screaming Frog. La regola: un solo H1 per pagina, corrispondente al titolo del prodotto, della categoria o della pagina CMS. Gli H2 per le sotto-sezioni del contenuto, H3 per i dettagli.
Dati strutturati (Schema.org)
I dati strutturati permettono a Google di comprendere il contenuto delle pagine e generare rich snippet nelle SERP — stelline delle recensioni, prezzo, disponibilità, breadcrumb. Per un e-commerce, il markup Schema.org corretto è un vantaggio competitivo diretto in termini di CTR.
Product markup
Ogni pagina prodotto deve includere il markup Product con le proprietà obbligatorie per i rich result. Esempio di implementazione in JSON-LD:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Sneaker Air Max 90",
"image": "https://www.example.com/img/sneaker-air-max-90.jpg",
"description": "Sneaker Air Max 90 in pelle bianca, suola Air-Sole visibile.",
"sku": "AM90-WHT-42",
"gtin13": "1234567890123",
"mpn": "AM90-WHT",
"brand": {
"@type": "Brand",
"name": "Nike"
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/sneaker-air-max-90.html",
"priceCurrency": "EUR",
"price": "129.90",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
Proprietà critiche spesso mancanti nelle implementazioni PrestaShop:
- gtin13/gtin14/mpn: Google richiede almeno uno tra GTIN e MPN per i rich result di prodotto. Senza, il markup viene ignorato
- priceValidUntil: obbligatorio dal 2023 per i rich result con prezzo
- availability: deve corrispondere allo stato reale del prodotto (InStock, OutOfStock, PreOrder)
- aggregateRating: solo se il sistema di recensioni è realmente attivo e le recensioni sono verificabili
BreadcrumbList
Il markup BreadcrumbList genera il percorso di navigazione nelle SERP al posto dell’URL grezzo. Implementazione consigliata:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Scarpe",
"item": "https://www.example.com/scarpe/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Sneaker Air Max 90"
}
]
}
Verifica che il breadcrumb nel markup corrisponda al breadcrumb visibile sulla pagina. Discrepanze tra markup strutturato e contenuto visibile possono essere interpretate come spam da Google. Per un approfondimento completo, leggi la guida all’ottimizzazione delle breadcrumb per la SEO.
Validazione e debugging
Usa il Rich Results Test di Google per validare il markup su ogni tipologia di pagina. In Google Search Console, la sezione Miglioramenti → Prodotti mostra errori e warning aggregati per tutte le pagine prodotto. Gli errori più comuni su PrestaShop:
- “Campo
gtinmancante” — compilare il campo EAN-13 nella scheda prodotto - “Campo
priceValidUntilmancante” — richiede intervento sul modulo o template del tema - “Immagine non specificata” — verificare che il campo image nel JSON-LD punti all’URL corretto dell’immagine principale
Pagine prodotto
Le pagine prodotto sono il core di qualsiasi e-commerce. La qualità del contenuto di ogni scheda prodotto influisce direttamente sulla capacità di posizionarsi per query transazionali.
Contenuto unico vs. descrizioni del produttore
L’errore più diffuso negli shop PrestaShop: usare le descrizioni fornite dal produttore come contenuto della pagina. Queste descrizioni sono identiche su centinaia di rivenditori, generando contenuto duplicato cross-domain che porta a cannibalizzazione. Google tende a posizionare una sola versione — quasi sempre il sito del produttore o il rivenditore con maggiore authority. Per scrivere descrizioni efficaci, consulta la guida al SEO copywriting.
Per ogni prodotto, la scheda deve includere:
- Descrizione breve (campo
description_short): 160-300 caratteri, focalizzata sul beneficio principale e sull’uso specifico del prodotto. Appare nella pagina di listing e, spesso, come snippet - Descrizione lunga (campo
description): 300+ parole, che copra caratteristiche tecniche, casi d’uso, confronto con alternative, FAQ specifiche del prodotto. Per la ricerca di parole chiave correlate da includere nelle descrizioni, usa gli strumenti indicati nella guida - Specifiche tecniche: tabella con materiali, dimensioni, peso, compatibilità
- Product identifiers: EAN-13, UPC, MPN nel campo dedicato — fondamentali per i dati strutturati e per Google Merchant Center
Gestione attributi e combinazioni
PrestaShop gestisce le varianti prodotto (taglia, colore) come “combinazioni”. Ogni combinazione può avere un URL separato o condividere l’URL del prodotto padre. La scelta ha implicazioni SEO dirette:
- URL unico per prodotto (raccomandato): le varianti cambiano tramite selettore senza modificare l’URL. Il canonical punta al prodotto padre. Evita frammentazione dei segnali di ranking
- URL separati per variante: giustificato solo se le varianti hanno volumi di ricerca significativi e autonomi (es. “iPhone 16 128GB” vs “iPhone 16 256GB”)
Prodotti esauriti e disattivati
La gestione dei prodotti non più disponibili è un aspetto spesso trascurato che ha impatto sia sul crawl budget sia sull’esperienza utente. Per un approfondimento completo su questo tema, leggi la guida alla gestione avanzata dei prodotti out of stock. Le strategie possibili:
| Scenario | Azione SEO | Status code |
|---|---|---|
| Prodotto temporaneamente esaurito | Mantenere la pagina attiva con avviso “Non disponibile” e markup availability: OutOfStock | 200 |
| Prodotto definitivamente rimosso, con sostituto | Redirect 301 verso il prodotto sostitutivo | 301 |
| Prodotto definitivamente rimosso, senza sostituto | Redirect 301 verso la categoria madre | 301 |
| Prodotto mai esistito o errore | Restituire 410 Gone (PS 8+ supporta 410) | 410 |
PrestaShop 8.x ha introdotto il supporto nativo per il codice di stato 410 Gone, configurabile nella scheda SEO di ogni prodotto. Questo informa i crawler che la pagina è stata rimossa intenzionalmente, accelerando la de-indicizzazione rispetto a un generico 404.
Pagine categoria
Le pagine categoria sono le pagine con il potenziale di ranking più alto in un e-commerce. Mentre le pagine prodotto competono per query long-tail specifiche, le pagine categoria intercettano query ad alto volume con intento di ricerca commerciale come “scarpe running uomo”, “abbigliamento bambino” o “accessori moto”.
Testo SEO per categorie
PrestaShop 8.x ha introdotto la funzione SEO Text Integration che permette di aggiungere testo ottimizzato direttamente nelle pagine categoria. Questo testo appare sotto il listing dei prodotti e fornisce contesto semantico a Google su cosa contiene la categoria.
Il testo di categoria efficace:
- Descrive la tipologia di prodotti presenti, i loro usi e le caratteristiche comuni
- Include le keyword target della categoria in modo naturale
- Contiene link interni verso sotto-categorie e prodotti di punta
- Ha una lunghezza minima di 200-300 parole per le categorie principali
Nota: evita il pattern “muro di testo” in fondo alla pagina che nessun utente leggerà. Il testo deve fornire valore informativo reale — guide alla scelta, comparazioni, consigli d’acquisto specifici per la categoria.
Paginazione e canonical
Le categorie con molti prodotti generano pagine di paginazione (?page=2, ?page=3). Evita soluzioni come l’infinite scroll che creano problemi di indicizzazione. Dopo che Google ha deprecato il supporto per rel="next"/"prev", la gestione ottimale della paginazione in PrestaShop prevede:
- Ogni pagina paginata ha il canonical autoreferenziale (non verso la pagina 1)
- Tutte le pagine paginate sono indicizzabili (niente noindex)
- I title tag delle pagine successive includono il numero di pagina: “Scarpe Running – Pagina 2 | NomeShop”
- I link di paginazione sono crawlabili (HTML, non JavaScript)
PrestaShop 8.x aggiunge automaticamente il suffisso del numero di pagina ai meta tag, ma verifica la corretta implementazione sul tuo tema.
Breadcrumb e gerarchia categorie
La struttura gerarchica delle categorie definisce l’architettura informativa dell’intero shop. Regole operative:
- Massimo 3 livelli di profondità (Categoria → Sotto-categoria → Sotto-sotto-categoria)
- Ogni prodotto deve essere raggiungibile in massimo 3-4 click dalla home page
- Il breadcrumb deve riflettere fedelmente la gerarchia delle categorie
- Configurare il markup BreadcrumbList in JSON-LD per ogni pagina categoria
Contenuti duplicati
PrestaShop è storicamente soggetto a problemi di contenuto duplicato a causa della sua architettura URL. Identificare e risolvere le fonti di duplicazione è una delle attività SEO più impattanti su questa piattaforma. Un content audit SEO è il metodo più efficace per mappare tutti i duplicati.
Cause principali di duplicazione in PrestaShop
| Causa | Esempio | Soluzione |
|---|---|---|
| Prodotto in più categorie | /scarpe/sneaker.html e /outlet/sneaker.html | Canonical verso URL della categoria principale. PS 9 risolve nativamente |
| Parametri di sessione | ?token=abc123 aggiunto agli URL | Canonical senza parametri + blocco in robots.txt |
| Filtri navigazione | ?color=rosso&size=42 | Noindex sulle pagine filtrate + canonical verso categoria |
| Paginazione | ?page=1 duplicato di URL senza parametro | Redirect 301 da ?page=1 alla versione senza parametro |
| HTTP/HTTPS e www/non-www | http:// e https:// rispondono entrambi | Redirect 301 globale verso la versione canonica |
| Multilingua senza hreflang | /it/prodotto e /en/product senza relazione | Implementare hreflang bidirezionale |
| Multistore con catalogo condiviso | Due domini con gli stessi prodotti | Canonical cross-domain o contenuto differenziato |
Per identificare i duplicati, esegui un crawl completo con Screaming Frog SEO Spider e analizza i report “Duplicate” per title, description, H1 e contenuto della pagina. Su shop con oltre 50.000 URL, un’analisi dei log del server integra il crawl simulato mostrando quali URL Googlebot sta effettivamente scansionando.
Ottimizzazione immagini
Le immagini rappresentano la quota maggiore del peso di una pagina e-commerce. Un catalogo con migliaia di immagini prodotto non ottimizzate è la prima causa di LCP lento e di consumo bandwidth eccessivo.
Formati moderni: WebP e AVIF
PrestaShop 9.0 supporta nativamente la generazione e il serving di immagini in formato WebP e AVIF. Rispetto al JPEG tradizionale:
- WebP: riduzione peso 25-35% a parità di qualità percepita. Supportato dal 97%+ dei browser
- AVIF: riduzione peso 40-50% rispetto a JPEG. Supporto in crescita (Chrome, Firefox, Safari 16.4+)
Su PS 8.x, il supporto WebP/AVIF richiede un modulo specifico o interventi sul tema. Indipendentemente dalla versione, il processo ottimale prevede la compressione delle immagini prima dell’upload con strumenti come Squoosh, TinyPNG o ImageOptim — il sistema di rigenerazione immagini di PrestaShop non applica compressione ottimale.
Alt text e nomi file
Ogni immagine prodotto deve avere:
- Nome file descrittivo:
sneaker-air-max-90-bianca-laterale.jpginvece diIMG_2847.jpg - Alt text specifico: “Sneaker Nike Air Max 90 bianca, vista laterale con suola Air-Sole visibile” — descrive l’immagine per utenti non vedenti e per Google Immagini. Per le immagini ospitate su CDN, leggi la guida su come indicizzare immagini su CDN
- Dimensioni corrette per breakpoint: servire immagini diverse per desktop (1200px), tablet (768px) e mobile (480px) tramite srcset
In PrestaShop, il campo “Didascalia” (Legend) delle immagini viene usato come alt text. Compilalo per ogni immagine — la compilazione massiva è possibile via importazione CSV.
Lazy loading
Il lazy loading nativo (loading="lazy") è il metodo più semplice per differire il caricamento delle immagini below the fold. In PrestaShop, verifica che il tema applichi l’attributo loading="lazy" alle immagini prodotto nelle pagine di listing e nelle gallerie prodotto, ma non all’immagine hero principale (che è l’elemento LCP). Per approfondire le differenze tra src, srcset e data-src nel tag img, consulta la guida dedicata. Per un quadro completo sull’ottimizzazione delle immagini per la SEO, leggi l’articolo completo.
Internal linking e navigazione
La struttura di internal linking distribuisce il PageRank all’interno del sito e guida i crawler verso le pagine più importanti. In un e-commerce PrestaShop, la navigazione è la struttura portante dell’internal linking.
Navigazione principale
Il menu di navigazione principale deve essere in HTML renderizzato server-side. I menu costruiti interamente in JavaScript (AJAX, React, Vue) possono non essere accessibili ai crawler al primo passaggio di rendering. PrestaShop genera il menu in HTML di default, ma alcuni temi premium utilizzano componenti JavaScript per mega menu complessi. Per capire la differenza tra ciò che vede il browser e ciò che vede Google, leggi l’articolo sulle differenze tra codice HTML e DOM.
Per verificare: apri la sorgente HTML della pagina (non il DOM nel browser) e controlla che tutti i link del menu siano presenti nel codice HTML iniziale.
Link contestuali
Oltre alla navigazione strutturale, i link contestuali dalle pagine editoriali (blog, guide, FAQ) verso le pagine commerciali (categorie, prodotti) creano percorsi di scoperta per i crawler e trasferiscono rilevanza tematica:
- Articoli del blog con link verso categorie e prodotti correlati
- FAQ di prodotto con link verso accessori e prodotti complementari
- Descrizioni di categoria con link verso sotto-categorie e prodotti di punta
- Widget “Prodotti correlati” e “Visti di recente” con link crawlabili
L’anchor text dei link interni deve essere descrittivo e contenere la keyword target della pagina di destinazione — evita anchor generici come “clicca qui” o “scopri di più”. Per ridurre i livelli di navigazione e rendere ogni pagina raggiungibile in meno click, consulta la guida dedicata.
Footer e link secondari
Il footer è un buon punto per link verso pagine informative (politica resi, spedizioni, chi siamo, contatti) e verso le categorie principali. Evita di inserire decine di link nel footer — Google potrebbe attribuire meno peso ai link in aree con densità eccessiva. Considera anche gli attributi rel nofollow, ugc e sponsored per i link esterni nel footer.
SEO internazionale e hreflang
PrestaShop supporta nativamente il multilingua e il multivaluta, ma la configurazione SEO per shop internazionali richiede interventi specifici sull’implementazione hreflang, sui canonical cross-language e sulla gestione degli URL localizzati.
Implementazione hreflang
Il tag hreflang indica a Google quale versione linguistica di una pagina servire in base alla lingua e al paese dell’utente. Per la scelta tra ccTLD e gTLD per siti multilingua, consulta la guida dedicata. Per ogni pagina con versioni in più lingue:
<link rel="alternate" hreflang="it" href="https://www.example.com/it/scarpe-running.html" />
<link rel="alternate" hreflang="en" href="https://www.example.com/en/running-shoes.html" />
<link rel="alternate" hreflang="fr" href="https://www.example.com/fr/chaussures-running.html" />
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/running-shoes.html" />
Regole critiche per l’hreflang su PrestaShop:
- L’hreflang deve essere bidirezionale: se la pagina IT punta alla versione EN, la versione EN deve puntare alla versione IT
- Includere sempre
x-defaultper la lingua/versione di fallback - L’URL nell’hreflang deve corrispondere esattamente al canonical della pagina target
- Per shop che servono lo stesso prodotto in più valute ma nella stessa lingua (es. EUR e GBP, entrambi in inglese), usare
hreflang="en-GB"ehreflang="en-IE"
PrestaShop non implementa hreflang nativamente. Serve un modulo dedicato o una modifica al template del tema per iniettare i tag nell’<head>. In alternativa, è possibile usare l’intestazione HTTP X-Robots-Tag per le direttive di indicizzazione. Per shop con catalogo ampio, l’implementazione via XML sitemap con hreflang è più scalabile rispetto ai tag HTML in pagina.
Per un approfondimento completo sulla SEO per e-commerce multilingua, inclusa la gestione delle varianti paese e delle strategie di dominio, consulta la guida SEO per eCommerce multi lingua.
Moduli SEO consigliati
L’ecosistema di moduli PrestaShop offre soluzioni per coprire le lacune SEO della piattaforma nativa. La scelta del modulo giusto dipende dalla versione di PrestaShop, dalla complessità del catalogo e dal budget.
| Funzione | Modulo | Versioni PS | Note |
|---|---|---|---|
| URL Clean (rimozione ID) | PS IT Clean URLs / Pretty URLs | 1.7, 8.x | Indispensabile se gli URL contengono ancora gli ID numerici |
| SEO all-in-one | SEO Expert (PrestaHero) | 1.7, 8.x | Template meta tag dinamici, sitemap avanzata, redirect manager, hreflang |
| Schema.org / Rich Snippets | Rich Snippets + JSON-LD | 1.7, 8.x, 9.0 | Product, BreadcrumbList, Organization, FAQ markup automatico |
| XML Sitemap avanzata | Advanced Sitemap Pro | 1.7, 8.x | Supporto hreflang in sitemap, immagini, frequenza personalizzata |
| Redirect manager | 301 Redirect Manager | 1.7, 8.x, 9.0 | Gestione centralizzata redirect, import CSV, pattern regex |
| Compressione immagini | Image Compress & WebP | 1.7, 8.x | Conversione automatica WebP su upload, compressione bulk |
Nota: installa il minimo numero di moduli necessari. Ogni modulo aggiunge peso al caricamento della pagina (verifica eventuali regole CSS inutilizzate introdotte dai moduli) e potenziali conflitti. Dopo l’installazione, verifica sempre con un crawl Screaming Frog che il modulo non abbia introdotto problemi (canonical errati, noindex indesiderati, redirect loop). Per una verifica rapida dell’indice, usa le tecniche di Google dorking.
Migrazione SEO da PrestaShop 1.7 a 8.x/9.0
L’aggiornamento da PrestaShop 1.7 a 8.x (o 9.0) è una migrazione tecnica che comporta cambiamenti nell’architettura URL, nel template engine e nella struttura dei moduli. Senza una pianificazione SEO specifica, una migrazione può causare perdite significative di traffico organico.
Checklist SEO pre-migrazione
- Crawl completo dello stato attuale: esegui un crawl con Screaming Frog e salva l’elenco completo di URL, title, canonical, status code, heading
- Export dati GSC: scarica le top pagine per click e impressions degli ultimi 16 mesi per avere un baseline di riferimento
- Redirect mapping: crea un file CSV con vecchio URL → nuovo URL per ogni pagina che cambia indirizzo. Prioritizza le pagine con più traffico. Per automatizzare il processo, il tool migTool risolve gli errori 404 con redirect intelligenti
- Verifica moduli SEO: controlla la compatibilità di ogni modulo SEO con la nuova versione. Molti moduli per PS 1.7 non funzionano su PS 8.x senza aggiornamento
- Backup dati strutturati: se il markup Schema.org era implementato via modulo, verifica che il modulo funzioni sulla nuova versione o pianifica una reimplementazione
Monitoraggio post-migrazione
Dopo la migrazione, il monitoraggio nelle prime 4-8 settimane è critico:
- Controlla in GSC la copertura dell’indice: errori 404, soft 404, pagine escluse per redirect. Per capire cosa impedisce l’indicizzazione, consulta la guida approfondita
- Monitora le impressioni e i click per le pagine top: un calo superiore al 20% dopo 2 settimane indica problemi di redirect o indicizzazione
- Esegui un nuovo crawl e confrontalo con il pre-migrazione per identificare URL mancanti, canonical cambiati, redirect interni da correggere e nuovi errori
- Verifica che i dati strutturati siano ancora validi nel Rich Results Test
- Controlla i Core Web Vitals con PageSpeed Insights: il nuovo tema potrebbe avere performance diverse. Per le intestazioni HTTP che migliorano la velocità, consulta la guida dedicata
Per una guida completa al processo di migrazione SEO, indipendente dalla piattaforma, consulta la guida alla migrazione SEO.
Blog integrato
Un blog integrato nello shop PrestaShop crea pagine indicizzabili aggiuntive che intercettano query informazionali correlate ai prodotti in vendita. Articoli su guide all’acquisto, comparazioni, tutorial e domande frequenti generano traffico organico qualificato e supportano l’internal linking verso le pagine commerciali.
Le opzioni per aggiungere un blog a PrestaShop:
- Modulo blog nativo (es. Smart Blog, Picto Blog): integrato nel back-office PrestaShop, gestione semplificata, ma funzionalità editoriali limitate
- WordPress in sottocartella (
/blog/): piattaforma editoriale completa, ecosistema plugin maturo, ma richiede installazione e manutenzione separate. L’installazione in sottocartella (non in sottodominio) mantiene l’equity SEO sullo stesso dominio
In entrambi i casi, gli articoli del blog devono linkare strategicamente verso le pagine categoria e prodotto pertinenti con anchor text descrittivi. Per pianificare i contenuti del blog, leggi la guida su come sviluppare un piano editoriale SEO. I contenuti esistenti vanno periodicamente aggiornati — la guida su come aggiornare i contenuti evergreen spiega il processo.
Checklist operativa SEO PrestaShop
Riepilogo delle ottimizzazioni SEO per PrestaShop 8.x/9.0, ordinate per priorità di impatto. Per un approccio strutturato all’analisi, consulta il template di SEO audit tecnico e la SEO checklist completa:
| Priorita | Azione | Dove | Difficolta |
|---|---|---|---|
| 1 | Attivare Friendly URL e rimuovere ID dagli URL | Parametri Negozio → SEO & URL + modulo | Bassa |
| 1 | Configurare canonical tag su tutte le tipologie di pagina | Impostazioni SEO + tema | Bassa |
| 1 | Redirect 301 HTTP→HTTPS e www→non-www | .htaccess o configurazione server | Bassa |
| 1 | Compilare title tag e meta description per ogni pagina | Schede prodotto, categorie, CMS | Media (tempo) |
| 2 | Implementare dati strutturati Product con GTIN/MPN | Modulo o tema | Media |
| 2 | Ottimizzare robots.txt e gestire filtri faceted | Parametri Negozio + tema | Media |
| 2 | Generare e inviare XML sitemap a GSC | Modulo gsitemap + GSC | Bassa |
| 2 | Ottimizzare immagini (compressione, WebP, alt text) | Pre-upload + schede prodotto | Media (tempo) |
| 3 | Scrivere contenuto unico per ogni scheda prodotto | Schede prodotto | Alta (tempo) |
| 3 | Aggiungere testo SEO alle pagine categoria | Schede categoria | Media |
| 3 | Ottimizzare Core Web Vitals (LCP, INP, CLS) | Hosting, tema, asset | Media-Alta |
| 3 | Implementare hreflang per shop multilingua | Modulo o tema | Alta |
| 4 | Configurare blog integrato con internal linking | Modulo blog o WordPress | Media |
| 4 | Impostare redirect e status code per prodotti rimossi | Schede prodotto + modulo redirect | Media |
Ogni intervento di questa checklist è misurabile: monitora le variazioni di crawl, indicizzazione, click e posizioni in Google Search Console nelle settimane successive all’implementazione. Per analisi avanzate dei dati GSC, la guida su Google Search Console + BigQuery e quella su API di Google Search Console con Python coprono gli aspetti più tecnici. Per comprendere come funziona Google e il suo intero processo di generazione di una pagina web, consulta le guide dedicate.
Articoli correlati
Autore
Mi chiamo Giovanni Sacheli e dal 2009 aiuto le aziende a farsi trovare online. Sono specializzato in SEO tecnica e PPC, competenze che applico quotidianamente nella mia agenzia, Searcus Swiss Sagl. Mi piace sviluppare strumenti a supporto del mio lavoro, ho creato SEOdata.app e cluster.army e co-scritto il libro SEO Audit Avanzato. Curo maniacalmente questo blog per colleghi e appassionati, dove mi "appunto" quello che imparo. Sono un NERD anni '80, motociclista e orgoglioso papà di due bambini.
Link:
Giovanni Sacheli
SEO Audit Avanzato
Searcus Swiss Sagl
SEOdata.app
cluster.army
Commenti |19
Lascia un commentoGran bell’articolo Giovanni: si potrebbe diventare “SEO specialist” solo con questo ;)
Grazie Loris, è un buon inizio ma non esageriamo :D
Ciao Giovanni,
con Prestashop 1.6 il canonical url è presente?!
Ciao Alessio, in Prestashop 1.6 è presente l’opzione per redirezionare la pagina al suo URL canonico, e dovrebbe anche includere il tag canonical nell’head html. Dovresti verificare il tema se lo mantiene o meno.
A presto!
Salve, articolo interessante. A proposito dei contenuti duplicati. Avrei una domanda riguardo la tecnica di proliferazione degli URL utilizzata da Magento (con il tag canonical). In pratica Magento nelle pagine di “categoria” per ogni combinazione di filtri crea un URL diretto. Ad esempio se visualizza la categoria scarpe avrò un URL miosito.it/scarpe, se filtro per scarpe donna avrò un URL miosito.it/scarpe/donna la pagina è “la stessa” ma con i contenuti filtrati. Questo a tutti gli effetti si traduce in contenuti duplicati. Per i siti e-commerce pare che Google apprezzi e premi questa tecnica di proliferazione, la stessa cosa la possiamo applicare anche ai siti non puramente ecommerce? Un catalogo senza carrello? O si rischia la penalizzazione?
Buongiorno Gianni, grazie per il commento. Non credo che Google apprezzi la proliferazione di pagine poco differenziate o peggio ancora duplicate.
Ciao Giovanni, bell’articolo.
Con Prestashop 1.7, stando alle esperienze che hanno riportato molti dei nostri membri, l’ottimizzazione SEO è diventata un poco più complessa e meno efficace, soprattutto per via dell’ IDs Product Attribute, che il CMS aggiunge di default agli URL prodotti. Molti infatti lamentano che nel passaggio da PS 1.6 alle ultima versione 1.7.x hanno perso, in pochissimo tempo, molte posizioni nel ranking di Google. Fortunatamente esiste una soluzione molto efficace ed economica, sviluppata sempre da uno dei nostri membri: un modulo ad hoc destinato alla pulizia degli URL Prestashop, che oltre ad eliminare il problema dell’ID Product Attribute in PS 1.7.x, risulta altrettanto efficace anche con le precedenti versioni PS, sia 1.5 che 1.6, consentendo di eliminare gli Ids da URL canonici (prodotti, categorie, cmas, etc) otre che ottimizzare l’albero delle categorie. Il modulo si chiama PS IT Clean Urls (ci permettiamo di inserire anche il link alla pagina di distribuzione psitsolution.com/prestashop-seo-clean-urls/it/, per tutti coloro che fossero interessati. Speriamo possa essere utile. Grazie.
bellissimo articolo,
io sto avendo un serio calo di visite sul mio sito ed un peggioramento dei SERP da qualche mese.
ti lascio il link e se riesci a darmi qualche dritta ti sarei molto grato.
Ciao Simone, grazie per il commento. Se vuoi lasciami i tuoi contatti compilando il form qui https://www.evemilano.com/contatti/ così posso studiarmi il sito e prepararti un preventivo ad hoc.
Buon lavoro!
Ottimo articolo, grazie Giovanni per la chiarezza.
Non so se questo è lo spazio giusto, ma ti chiedo questo:
ho un sito in Prestashop realizzato in italiano e inglese. Per gestire la valuta per gli Stati Uniti (dollaro) sono state predisposte le schede in inglese e i prezzi in un dominio di III livello:
us.nomedominio.com/57-nome-keyword-edition
mentre per quanto riguarda la valuta europea (euro) le schede in inglese risiedono nel dominio di II livello www.nomedominio.com/57-nome-keyword-edition.
Notare che la url friendly è uguale 57-nome-keyword-edition, così come il contenuto della pagina. L’unica differenza e la valuta.
Poichè “sembra essere questa” una limitazione di Prestashop per gestire la valuta, qualora volessi mantenere questa situazione, come posso impedire a Google di indicizzare le pagine che risiedono su https://us.nomedominio.com/ ? E quindi evitare di incorrere nella penalizzazione per contenuto duplicato…?
Considera inoltre che abbiamo attivato la GEOLOCALIZAZIONE AUTOMATICA degli url, cioè significa che se il mio utente (Esempio utente dagli Stati Uniti) trova nelle serp www.nomedominio.com/57-nome-keyword-edition, gli viene sparato un cookie che riconosce il suo IP e re-indirizzato verso la pagina con la valuta corretta, us.nomedominio.com/.
Posso risolvere questa situazione con i tag canonical? Cosa ne pensi?
Ciao Settimo, Prestashop 1.7 gestisce le valute, non è corretto fare un sotto-dominio per una sola valuta perché per risolvere un piccolo problema ne aggiunge decine di nuovi. Le consiglio di aggiornare PS all’ultima versione e sarà tutto più semplice. Se proprio vuole mantenere questo setup renderei NOINDEX tutto il sito US.
Inoltre, a Google la geolocalizzazione automatica NON piace, dal punto di vista SEO non è una buona pratica redirezionare automaticamente. E’ sempre meglio far scegliere all’utente anche se sembra meno efficace.
Spero di averle chiarito le idee :) a presto!
Complimenti per l’articolo.
ho un consiglio da chiedere , ho un sito in Prestashop in lingua italiana, il modulo amazon obbliga di attivare le lingue per importare gli ordini stranieri, facendo ciò mi sono ritrovato indicizzate url con suffisso /en /de tutte in lingua italiana! quindi duplicate!
Cosa consigli di fare?
Ciao Alessandro, ho spostato il tuo commento in questo articolo che è più correlato.
Se le versioni /en e /de ti servono solo per i market place, ti consiglio di escluderle totalmente dall’indicizzazione.
Secondo me dovresti rimuovere qualsiasi link che dalla versione in italiano punta a quelle estere, ed inserisci il tag noindex in tutte le pagine dentro /en e /de. Non usare il disallow del robots.txt.
A presto!
Complimenti per l’articolo veramente Grazie! 👏
TI volevo chiedere un piccolo dettaglio riguardante l’url friendly.
Come hai tu ben spiegato, ho impostato i parametri che hai consigliato e il tutto funziona correttamente. Tuttavia prestashop mi obbliga a mantenere il numero id prima del nome prodotto. Ecco un esempio:
/105-christmas-card.html.
Secondo te è possibile rimuovere il numero che precede il prodotto/categoria ?
Grazie infinite!
Ciao in realtà mi sono resa conto che la spiegazione me l’hai già data nell’articolo… grazie
Ciao :)
Potresti provare con uno di questi moduli Prestashop:
https://www.fmemodules.com/en/prestashop-seo/49-pretty-seo-friendly-urls.html
https://addons.prestashop.com/en/url-redirects/16633-pretty-urls-seo-friendly-url-remove-ids-numbers.html
https://addons.prestashop.com/en/seo-natural-search-engine-optimization/16939-seo-expert.html
o moduli simili.
ottimo articolo. io ho ottenuto risultati eccezionali con il modulo ps clean urls di ps the web solution. a mio avviso (li ho provati tutti) il migliore per rapporto qualita’ e prezzo.
Ciao Michele, grazie mille!
Il tuo feedback è sicuramente più aggiornato della guida.