pourquoi la duplication d'url de produit magento


10

J'utilise magento 1.7. je fais face à un problème étrange. magentofaire une URL de produit en double avec un nombre aléatoire avec une mauvaise clé d'URL, veuillez ma capture d'écran ci-jointe

Je vide également les rewrite_urlsURL de table et de réindexation, mais je me trompe toujours d'URL. veuillez m'aider à résoudre ce problème. si vous ne parvenez pas à afficher les images en question, veuillez cliquer sur les liens URL de produit en double et Produit dans le panneau d'administration

URL de produit en double,produit actuel

Permettez-moi de vous faire comprendre avec un exemple

Comme si j'avais un produit nommé "exemple" et que la clé URL était "exemple", l'URL serait

www.example.com/example

et maintenant j'ai créé un nouveau produit "xyz et la clé url est" xyz "et l'url doit être

www.example.com/xyz

mais magento générant une URL

www.example.com/example-123

Tu veux dire la table core_url_rewrite?
Fabian Blechschmidt

oui je veux dire core_url_rewrite

Cela se produit car vous avez / avez eu 2 produits avec la même clé URL. Essayez de tronquer la core_url_rewritetable abd run url réécrit l'indexeur à nouveau.
Dmytro Zavalkin

non j'ai vérifié que j'ai des clés d'URL uniques et j'ai déjà essayé cette option "Essayez de tronquer la table core_url_rewrite et d'exécuter à nouveau l'url réécrit l'indexeur"

Réponses:


6

Cela semble être un bug dans la 1.7. Si vous avez plusieurs produits simples avec la même clé d'URL que le produit configurable (par exemple, tous les noms sont les mêmes), alors magento crée toujours une nouvelle réécriture d'URL à chaque processus d'index. Exemple:

Premier indice:

  • myproducturl (produit de configuration)
  • myproducturl-id (produit simple avec son identifiant ajouté, jusqu'ici tout va bien)

Deuxième index:

  • myproducturl (produit de configuration)
  • myproducturl-randomnumber (produit simple avec un nombre aléatoire, BAD)
  • myproducturl-id -> myproducturl-randomnumber (réécriture dans la nouvelle URL)

Et à chaque nouveau processus d'indexation, la dernière étape sera répétée, donc toujours une nouvelle clé d'URL aléatoire est générée. Si magento vérifie qu'une clé URL avec l'identifiant de ce produit existe déjà, cela ne devrait pas poser de problème.

Après quelques mois, vous aurez une très grande table url_rewrite, car rien ne sera supprimé et à chaque exécution, au moins 1 enregistrement pour chaque produit avec la même clé URL sera créé.


Cela nous a causé de gros problèmes. Nous avons 1 produit avec 20 variations de couleurs et 8 tailles pour chacune, nous avons donc BEAUCOUP de produits simples qui sont importés du même nom. Étant donné que la clé URL est le nom s'il n'est pas spécifié, nous nous retrouvons avec de nombreux doublons. Ce qui est ennuyeux, c'est que nous n'avons même pas de simples accessibles individuellement (ce qui fait en sorte qu'ils se moquent de l'index en premier lieu). Nous avons contourné cela dans une certaine mesure en important le sku simple dans son nom, car il n'est pas visible sur le front-end, nous nous en sortons.
Peter O'Callaghan

Je suis également confronté à ce problème, et ma table de réécriture d'URL compte plus de 80 000 entrées pour seulement 4 000 produits. Si quelqu'un a des informations complémentaires à ce sujet, veuillez me le faire savoir.
andyjv

Il existe un correctif d'entreprise qui résout ce problème pour CE.
brentwpeterson le

@brentwpeterson Connaissez-vous l'ID de ce patch?
Paul


7

Nous avons également été touchés par ce bug. Nous réindexons chaque jour et avons gagné 24 000 URL en quelques jours pour environ 1 000 produits.

Je pense que j'ai peut-être trouvé une solution. J'ai mis ce correctif en direct sur notre site de production et je vais voir comment ça se passe. Si d'autres peuvent le tester, ce serait utile.

  1. En cas de problème, effectuez une sauvegarde de la table et des données core_url_rewrite

  2. Dans app / code / core / Mage / Catalogue / Model / Url.php line 809 change

    if ($product->getUrlKey() == '' && !empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        )
    

    à

    if (!empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        ) 
    
  3. Tronquer (vide) la table core_url_rewrite

  4. Sous Système -> Gestion de l'index, réindexez l'URL du catalogue Réécrit les données

Vous devriez maintenant être en mesure de réindexer à nouveau sans créer des milliers de réécritures d'URL aléatoires.

Merci à Jahnni et snowcountry pour le correctif - en savoir plus à ce sujet ici: http://www.magentocommerce.com/boards/viewthread/416476/

Rapport de bogue ici: http://www.magentocommerce.com/bug-tracking/issue?issue=15048


Cela a fonctionné pour moi. Vote positif
sulabh

Je ne pense pas que cela fonctionne correctement sur 1.9.x. Voir ici pour un correctif de travail: gist.github.com/edannenberg/5310008
BlueC

0

Nouveau:

C'est fou. On dirait un problème de mise en cache!? Quelque chose dans le processus d'indexation est cassé, mais aucune idée, désolé.

Vieux:

Je n'ai aucune idée, pourquoi cela se produit, mais j'écris mon expérience et mes idées:

  1. Lorsque Magento trouve une réécriture déjà existante, il ajoute un numéro de comptage.

  2. Lorsque vous modifiez la réécriture, magento crée une réécriture pour l'ancienne URL (si la case sous le champ de saisie de texte est cochée).

  3. Je pense que les réécritures d'URL personnalisées sont peut-être enregistrées ailleurs, donc les réécritures personnalisées sont appliquées en premier et ensuite on essaie d'ajouter les réécritures du produit et si ce n'est pas possible, le compteur est ajouté?


s'il vous plaît voir ma question, je l'ai mis à jour à nouveau votre message ne me sert pas en ce moment

mis à jour la réponse, mais pas utile :(
Fabian Blechschmidt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.