C’è un bug noto agli addetti ai lavori (ma alla fine nemmeno poi tanto!) in Magento 1.x per il quale le url-rewrites si comportano in modo decisamente strano e crescono esponenzialmente ad ogni reindex del catalogo se si verificano determinate condizioni.

Il problema in questione si verifica quando creiamo 2 o più prodotti con lo stesso nome, avendo quindi la stessa url-key. Non possono esistere 2 prodotti diversi che condividono la stessa URL, questa deve essere necessariamente univoca.

Magento quindi, nel momento in cui creiamo il secondo prodotto, va ad aggiungere l’ID del prodotto stesso alla URL, rendendola di fatto univoca.

Verificata questa situazione, iniziano i guai!

Ad ogni reindicizzazione del catalogo, proprio a causa di questo bug, i prodotti che hanno questo tipo di url-key url-key-condiviso-{product_id}, verranno rielaborati dal catalog_url_rewrite e purtroppo le URL verranno cambiate, incrementando di N il product_id nella URL ed effettuato un reindirizzamento permanente (301 Moved Permanently) alla URL precedente.
Questo, dal punto di vista SEO, è terribile e Google non sarà molto contento se ogni giorno andiamo a cambiargli la metà delle URL.

Procediamo con ordine quindi e vediamo come risolvere la soluzione.

1. Ricreiamo il problema

  • Creiamo 1 prodotto di tipo SEMPLICE, chiamandolo ad esempio Maglietta Rossa e assicuriamoci che la url-key sia maglietta-rossa;
  • Compiliamo tutti i campi obbligatori del prodotto e salviamolo;
  • Duplichiamo ora il prodotto, fornendo ovviamente uno SKU diverso, assicurandoci che abbia la stessa url-key e salviamo, quindi di nuovo maglietta-rossa;
  • Effettuiamo una prima reindicizzazione del catalogo e vediamo cosa succede;

Avremo di certo 2 prodotti Maglietta Rossa, e andando a controllarne le URL , avremo:

http://magento.localhost/maglietta-rossa.html il primo prodotto
http://magento.localhost/maglietta-rossa-910.html il secondo prodotto

Quel 910 è, nel mio caso, l’ID del prodotto.

Facciamo ora un nuovo reindex del catalogo e andiamo a ricontrollare le URL dei prodotti.

Avremo:
http://magento.localhost/maglietta-rossa.html il primo prodotto
http://magento.localhost/maglietta-rossa-911.html il secondo prodotto

Ecco il bug! Senza aver toccato assolutamente nulla, l’URL del secondo prodotto è cambiata, 910 è diventato 911 (solo nella URL, l’id del prodotto è rimasto lo stesso)

Se andiamo a controllare poi dal pannello di amministrazione le URL Rewrite, (Catalogo -> Gestione URL Rewrite) troveremo delle nuove regole relative alla URL maglietta-rossa-910.html.[table color=”white” ]

IDVista NegozioTipoPercorso IDPercorso richiestoTarget PathOpzioni
135892Main Website Madison Island
German
Personalizzato09738400_1461405308maglietta-rossa-910.htmlmaglietta-rossa-911.htmlRP

[/table]

Putroppo d’ora in poi, se non interverremo, le URL continueranno a cambiare e le regole ad aumentare esponenzialmente ad ogni reindicizzazione.

2. Risoluzione del problema

Il team di Magento ha risolto la questione tempo fa, fornendo una patch per la versione Magento Enterprise, che per qualche strano motivo non si decide di implementare di default sulla Magento CE.
Piotr Kaminski ha fortunatamente messo a disposizione di tutti questa patch, che è possibile scaricare liberamente da gist PATCH_SUPEE-389_EE_1.12.0.2_v2.sh e che può essere installata come qualsiasi altra patch in Magento.

Non ci resta quindi che scaricare e installare la suddetta patch e il problema dovrebbe risolversi. Fate prima  i dovuti test prima di applicarla sull’installazione in produzione!

 

Se non sai come applicare un patch in Magento ma vorresti imparare, leggi questo post: Installare Magento Patches