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 prodottohttp://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 prodottohttp://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” ]
ID | Vista Negozio | Tipo | Percorso ID | Percorso richiesto | Target Path | Opzioni |
---|---|---|---|---|---|---|
135892 | Main Website Madison Island German | Personalizzato | 09738400_1461405308 | maglietta-rossa-910.html | maglietta-rossa-911.html | RP |
[/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!
Salve Valerio,
per la nostra installazione di Magento CE versione 1.9.1.1 , abbiamo provato la patch PATCH_SUPEE-389_EE_1.12.0.2_v2.sh , ma rileviamo degli
errori nell’installazione.
Serve una versione specifica per la CE?
grazie
Stefano
Salve Stefano,
no la patch che in origine era per la EE ed è compatibile con la CE. Se ti da errore nell’installazione è perché potrebbero essere state applicate modifiche al file che viene patchato.