SEO Magento 2: guida pratica all’ottimizzazione di un e-commerce Adobe Commerce
SEO Magento 2 (oggi ribrandizzato come Adobe Commerce nella versione enterprise) è una piattaforma potente ma piena di trappole SEO che i plugin non risolvono automaticamente. La maggior parte dei siti Magento che vedo ha gli stessi 5-6 problemi ricorrenti: URL duplicate per prodotti in più categorie, layered navigation che genera migliaia di URL parametriche indicizzabili, canonical mal configurati, sitemap che include prodotti disabilitati, e Core Web Vitals disastrosi per via del tema Luma out-of-the-box.
Indice contenuti:
Questa guida copre le configurazioni che fanno davvero la differenza, con i percorsi esatti nel pannello admin e i casi in cui serve uscire dal pannello e mettere mano al codice.
Perché Magento è più complicato di WooCommerce o Shopify sul piano SEO
Tre motivi strutturali:
1. Architettura a prodotti multi-categoria. In Magento lo stesso prodotto può stare in N categorie, e di default genera un URL diverso per ogni combinazione: /scarpe/running/nike-air-max-90 e /nike/nike-air-max-90 puntano alla stessa scheda. Senza intervento, Google vede duplicati.
2. Layered navigation aggressiva. I filtri di categoria generano URL parametriche indicizzabili (es. ?color=red&size=42&price=50-100). Su un catalogo di 5000 prodotti con 6 filtri si generano facilmente centinaia di migliaia di URL combinatorie, tutte potenzialmente crawlate.
3. Performance out-of-the-box pessime. Il tema Luma di default ha LCP spesso sopra i 4 secondi, CLS visibile sulla home, e JavaScript bundle monolitico. Senza un tema custom o Hyvä/PWA Studio, i Core Web Vitals non passano.
Configurazioni di base: prima di tutto, il pannello
Percorsi indicati per Magento 2.4.x (valgono anche per Adobe Commerce).
URL SEO-friendly
Stores > Configuration > Catalog > Catalog > Search Engine Optimization:
- Use Categories Path for Product URLs: No Impedisce la generazione di URL diverse per lo stesso prodotto in categorie diverse. Single URL, single source of truth. Questa è la prima cosa che cambio su ogni Magento nuovo.
- Create Permanent Redirect for URLs if URL Key Changed: Yes Ogni volta che modifichi l’url_key di prodotto o categoria, Magento crea automaticamente un 301 nella tabella
url_rewrite. Attenzione: questa tabella cresce molto nel tempo, va pulita periodicamente (vedi sezione dedicata). - Use Canonical Link Meta Tag For Categories: Yes Use Canonical Link Meta Tag For Products: Yes Obbligatori. Senza questi, le varianti URL generate da filtri o paginazione non hanno canonical e finiscono indicizzate.
Meta robots di default
Stores > Configuration > Design > Search Engine Robots:
- Default Robots: INDEX, FOLLOW in produzione
- INDEX, NOFOLLOW o NOINDEX, NOFOLLOW in staging
Controllo banale ma lo vedo sbagliato nel 30% dei siti: staging online con INDEX,FOLLOW, contenuto duplicato con la produzione, guai garantiti.
Robots.txt
Content > Design > Configuration > [tuo store view] > Search Engine Robots > Edit custom instruction of robots.txt File.
Template di partenza per Magento 2:
User-agent: *
Disallow: /admin/
Disallow: /catalogsearch/
Disallow: /checkout/
Disallow: /customer/
Disallow: /sendfriend/
Disallow: /review/
Disallow: /wishlist/
Disallow: /*?SID=
Disallow: /*?p=
Disallow: /*?dir=
Disallow: /*?order=
Disallow: /*?limit=
Sitemap: https://www.esempio.com/sitemap.xml
Non bloccare /media/ o /static/ — servono i CSS, JS e immagini per il rendering corretto lato Google.
Sitemap XML: generazione e trappole
Marketing > SEO & Search > Site Map > Add Sitemap.
Configurazione consigliata, prodotti per prodotti (Stores > Configuration > Catalog > XML Sitemap):
| Sezione | Impostazione | Perché |
|---|---|---|
| Categories: Frequency | weekly |
Ignorato da Google, tanto vale non esagerare |
| Categories: Priority | 0.8 |
Ignorato da Google, coerenza interna |
| Products: Frequency | daily |
Ignorato da Google |
| Products: Add Images | Base |
Include le immagini prodotto in sitemap |
| CMS Pages: Priority | 0.5 |
Ignorato da Google |
| Generation Settings: Enabled | Yes |
Attiva il cron |
| Generation Settings: Frequency | Daily |
|
| Generation Settings: Start Time | Orario basso traffico | Generare una sitemap su cataloghi grandi è oneroso |
Trappola ricorrente: la sitemap Magento di default include tutti i prodotti con status = enabled, anche quelli con visibility = "Not Visible Individually" (tipicamente varianti figlie di prodotti configurabili). Queste varianti non hanno una URL frontend accessibile: la sitemap finisce piena di URL che restituiscono 404 o redirect.
Rimedio: override della classe Magento\Sitemap\Model\ResourceModel\Catalog\Product::getCollection() in un modulo custom, oppure plugin SEO di terze parti (Mirasvit, Amasty) che filtrano per visibility.
Layered navigation: il problema numero uno
I filtri di categoria generano URL tipo: /scarpe-running.html?color=42&price=50-100&size=15
Senza configurazione, queste URL:
- Vengono linkate internamente (ogni filtro è un
<a>crawlabile) - Hanno
<meta robots>INDEX,FOLLOW - Hanno canonical che punta a se stesse (quindi sono URL indicizzabili uniche)
- Duplicano il contenuto della categoria padre
Risultato tipico su un sito di 3000 SKU: 80.000-200.000 URL inutili crawlate ogni mese, crawl budget bruciato, duplicati a palate.
Soluzione minima (senza moduli aggiuntivi)
Il canonical impostato a “Yes” per le categorie fa sì che le URL filtrate abbiano canonical → categoria padre. Ma Google può ignorare il canonical quando il contenuto differisce significativamente, quindi è una soluzione parziale.
Meglio combinare:
- Canonical → categoria padre (via configurazione nativa)
<meta robots>noindex, followsulle URL con parametri filtro (richiede intervento custom)- Parametri di tracking/ordinamento bloccati in
robots.txt(vedi template sopra)
Soluzione strutturale: SEO-friendly URLs per filtri
Per filtri ad alto valore di ricerca (es. “scarpe running Nike”, “scarpe running uomo”), si creano pagine di categoria dedicate con URL pulita (/scarpe-running/nike/) invece di affidarsi ai parametri. Si fa con:
- Moduli tipo Amasty Improved Layered Navigation + SEO Filters
- Oppure Mirasvit Advanced SEO
- Oppure implementazione custom via
url_rewrite+ template di categoria virtuale
Questa è una decisione strategica, non un interruttore da attivare: scegli 20-50 filtri con volume di ricerca reale (verificato su Ahrefs/Semrush) e li promuovi a pagine autonome con contenuto unico. Il resto resta noindex.
Prodotti duplicati e canonical cross-store
Problema frequente su Magento multistore: lo stesso prodotto in store view italiano e internazionale con URL diverse (/it/prodotto e /en/prodotto). Senza hreflang, Google vede duplicati.
Soluzione:
- Hreflang implementati (vedi l’articolo dedicato)
- Canonical corretti per ciascuno store view (Magento li gestisce nativamente se configurato)
- URL rewrite puliti: non
?___store=en, ma/en/prodotto
Redirect e pulizia della tabella url_rewrite
La tabella url_rewrite in Magento accumula redirect ogni volta che cambi un url_key di prodotto o categoria. Su un catalogo che ruota molto, diventa facilmente 100.000+ righe con catene di redirect (A → B → C → D).
Effetti sulla SEO:
- Lentezza del frontend (ogni richiesta fa query su una tabella enorme)
- Catene di redirect che consumano crawl budget
- Perdita di “link juice” sui 301 concatenati
Manutenzione:
# Identificare catene di redirect
SELECT * FROM url_rewrite WHERE redirect_type = 301;
# Per le catene: o si consolidano manualmente, o si usa un modulo
# tipo Amasty SEO Toolkit > URL Rewrites Manager
Audit consigliato ogni 6 mesi. Catene più lunghe di 2 salti vanno accorciate.
Core Web Vitals: il problema strutturale di Luma
Il tema Luma out-of-the-box ha questi problemi tipici:
- LCP 3-5s: JavaScript bundle da 2+ MB caricato prima del rendering
- CLS visibile: header che si ridimensiona al caricamento, immagini senza dimensioni dichiarate
- INP alto: molte interazioni bloccate da task lunghi sul main thread
Le uniche soluzioni che funzionano davvero
- Migrare a Hyvä Theme. Hyvä è un tema alternativo (Alpine.js + Tailwind, zero jQuery) che di default ha LCP sotto i 2 secondi. Licenza ~€1000 una tantum, ROI evidente su traffico organico. È diventato lo standard de facto per i nuovi progetti Magento seri.
- Passare a PWA Studio o Vue Storefront. Headless frontend, Magento solo come backend. Intervento pesante (rebuild del frontend) ma ottimo per performance. Senso soprattutto su progetti nuovi.
- Restare su Luma, ottimizzato. Possibile ma richiede: CDN (Cloudflare/Fastly), Varnish configurato correttamente, Redis per session e cache, critical CSS inline, lazy loading aggressivo, defer/async su tutti gli script non critici. Si arriva a LCP 2.5-3s, raramente sotto.
- Hosting. Magento su shared hosting è morto in partenza. Minimo Magento Cloud, Sonassi, MGT Commerce, o VPS dedicato con tuning PHP-FPM + MySQL/MariaDB. TTFB sotto 200ms è la base.
Dati strutturati
Magento nativo genera JSON-LD limitato. Per coprire i tipi richiesti da Google (Product, Offer, AggregateRating, Organization, BreadcrumbList) serve quasi sempre un modulo:
- Magefan Rich Snippets (gratuito)
- Mageplaza SEO (commerciale, più completo)
- Amasty SEO Toolkit (commerciale, enterprise-grade)
Validazione obbligatoria con Rich Results Test (https://search.google.com/test/rich-results) prima di pubblicare. Un Product schema senza price o availability è tecnicamente valido ma non genera il rich snippet.
Checklist operativa
Da passare su qualsiasi Magento prima di considerarlo “SEO-ready”:
Configurazione base:
- Use Categories Path for Product URLs: No
- Canonical abilitati per prodotti e categorie
- Robots default: INDEX,FOLLOW in prod, NOINDEX in staging
- robots.txt custom con blocco di parametri e aree private
- Sitemap generata, inviata a Search Console, esclude prodotti
Not Visible Individually
Duplicati e crawl:
- Layered navigation: strategia decisa (noindex totale oppure filtri strategici promossi a pagine)
- hreflang corretti su multistore
- Redirect chain audit (no catene oltre 2 hop)
- url_rewrite table sotto controllo (manutenzione semestrale)
Contenuto:
- Meta title e description unici per categoria/prodotto (no template generici)
- Descrizioni prodotto non duplicate dal fornitore (altrimenti se Google trova la stessa descrizione su 50 siti, nessuno ranka)
- Dati strutturati Product + Organization + BreadcrumbList validati
Performance:
- LCP < 2.5s su mobile (misurato su 75° percentile CrUX)
- CLS < 0.1
- INP < 200ms
- Cache Varnish + Redis attivi
- CDN configurata
Monitoraggio:
- Google Search Console connessa e monitorata settimanalmente
- Log del server analizzati per capire cosa Googlebot effettivamente crawla
Takeaway
- Il 70% dei problemi SEO Magento si risolvono con la configurazione nativa, se la conosci
- Il restante 30% richiede moduli di terze parti o intervento custom (tipicamente layered navigation e pulizia url_rewrite)
- Il tema Luma è il collo di bottiglia sulle performance: su progetti seri, Hyvä è la scelta razionale
- Niente di tutto questo rankerà al posto dei contenuti: descrizioni prodotto uniche, testi di categoria utili e link building restano i fattori decisivi
