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.

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:

  1. Vengono linkate internamente (ogni filtro è un <a> crawlabile)
  2. Hanno <meta robots> INDEX,FOLLOW
  3. Hanno canonical che punta a se stesse (quindi sono URL indicizzabili uniche)
  4. 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, follow sulle 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:

bash
# 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

  1. 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.
  2. 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.
  3. 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.
  4. 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
Torna in alto