J'ai remarqué un grand nombre de rapports selon lesquels ce tableau lui-même peut devenir extrêmement encombré. Je gère un site avec environ 5 000 SKU et environ 250 catégories (magasin à magasin unique), ce qui entraîne core_url_rewrite
tableau de plus de 600 000 lignes et de plus de 500 Mo, qui est fou.
Cela peut ralentir les performances du site et générer une base de données très volumineuse. J'ai creusé et trouvé quelques articles à ce sujet, notamment:
Bug Core_url_rewrite: quantité massive d'URL en double pour chaque produit généré sur l'indexMagento Commerce - Suivi de bugs - Numéro n ° 29020
// Ces liens ont été supprimés depuis la mise en place des nouveaux conseils.
Je comprends maintenant que le tableau peut être tronqué et réindexé, mais cela ne résout pas le problème, il ne fait que prolonger le problème.
D'après ce que j'ai compris, une partie du problème concerne les produits qui ont la même clé URL basée sur le nom du produit, ce qui entraîne des liens indexés.
Un correctif mentionné est:
app/code/core/Mage/Catalog/Model/Url.php
en ligne ~ 807:
Changement:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
À:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Mais même cela ne résout pas complètement le problème.
Ma question est la suivante:
Si vous avez rencontré ce problème, avez-vous réussi à mettre en place un système efficace, logique et efficace? algorithme , qui ne consiste pas à "gérer" le problème de manière répétée, mais à résoudre le problème une fois pour toutes?
Serait vraiment apprécier un aperçu de ce sujet .
BTW: S'il vous plaît, faites-vous une faveur et vérifiez à quoi ressemble votre table, vous êtes peut-être confronté à ce problème et à l'impact sur les performances qui en résulte sans même le savoir - je ne l'ai pas fait.
Edit: j’ai été en contact avec www.Nexcess.net (un partenaire d’hébergement Magento Platinum) et ils ont confirmé que leurs clients avaient demandé à leur core_url_rewrite
table d’être tronquée parce qu’elle était trop volumineuse.
L’un de mes soucis majeurs est l’impact SEO que cela peut avoir, c’est la raison pour laquelle je voudrais une solution plutôt que de remettre à plus tard la question.
Mise à jour: Nexcess a mentionné qu'avec les produits en double figurant dans le tableau, il pourrait en réalité nuire au référencement tel quel.
la source
Réponses:
J'ai réussi à stabiliser le problème comme suit:
Étape 1: réécrivez le modèle d'URL de catalogue (à l'aide de votre propre module: Comment )
Selon la solution de Jahnni sur
les forums MagentoCommerce(n'est plus actif avec le nouveau tableau),app/code/core/Mage/Catalog/Model/Url.php
[autour de la ligne 807Mage_Catalog_Model_Url::getProductRequestPath()
]De:
À:
Étape 2: tronquer
Tronquer la
core_url_rewrite
tableÉtape 3: Réindexer et vider les caches
Lancer le processus de réindexation sur les réécritures d'URL principales. Ensuite, vous voudrez vider le cache de Magento et le cache de stockage.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Voilà, vous êtes tous ensemble. Vous remarquerez que si vous réexécutez l'indexeur, la taille de la table doit rester constante (à moins que vous n'ayez ajouté plus de produits entre les deux ou si vous avez des noms de catégorie en double).
la source
core_url_rewrite
maintenant le tableau et notez le nombre d'enregistrements. Exécutez à nouveau l'étape 3 (la réindexation) et actualisez votre vue sur lacore_url_rewrite
table. Si le nombre est identique, vous avez résolu le problème. Puis poursuivez et fusionnez manuellement vos réécritures personnalisées. Bonne chance.J'espère que quelqu'un ici apportera une réponse, mais je ne sais pas si vous en trouverez une. Cette table devient volumineuse pour différentes raisons. Les bogues dans les versions antérieures (et éventuellement actuelles) de Magento en sont un. Une autre solution réside dans la logique de ce tableau qui tente de suivre les modifications apportées à la valeur de la clé d'URL afin que les réécritures 301/302 soient configurées pour les anciens produits. Pour cette raison, et pour compliquer les choses, tronquer la table et la régénérer peut faire disparaître les réécritures d'URL existantes, et cela aura un effet inconnu sur la liste de votre moteur de recherche (pas nécessairement mauvais, mais difficile à prévoir).
Mon conseil général aux clients qui demandent est
Laissez la table de croissance géante telle quelle si vous ne maîtrisez pas bien votre situation URL / SEO
Jusqu'à ce que la taille de la table commence à poser problème (génération de cartes de site, par exemple). Lorsque cela se produit, obtenez un aperçu de votre situation URL / référencement.
Une fois que vous avez un aperçu de votre situation URL / SEO, sauvegardez la table, puis tronquez la table et régénérez. Adressez tous les problèmes d'URL / SEO causés par la troncature.
Automatiser l'étape 3
Essayer de résoudre ce problème au niveau du code Magento est admirable, mais vous nagerez en amont. Parfois, il est préférable d’accepter que "C’est juste que Magento soit Magento" et de résoudre le problème avec un processus externe.
la source
J'aimerais ajouter un correctif pour ce bogue d'indexeur de réécriture d'URL qui a été développé lors du bugathon en mars 2013 et qui a été amélioré par la suite. Cela devrait résoudre ce problème. À titre de référence, voici le fichier de correctif à partir du lien:
De plus, j'aimerais ajouter le correctif EE
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, qui est maintenant disponible sur GitHub :Si vous souhaitez utiliser ce correctif avec CE, assurez-vous de le tester correctement, car il a été développé pour EE.
la source
Après avoir appliqué le correctif publié par Simon, vous pouvez utiliser la requête suivante pour supprimer les données indésirables:
Contrairement à la requête d'Ashish Hira, cela n'affecte que les URL dont le dernier chiffre est un entier, c'est-à-dire, dans mon cas, la raison de l'encombrement.
Il essaie de ne pas toucher les réécritures valides, qui pourraient par exemple avoir été créées lors de la mise à jour d'une clé d'URL.
la source
J'ai implémenté la réponse acceptée avec succès. Sur une autre installation de Magento, j'avais besoin de conserver certaines réécritures personnalisées. J'ai donc supprimé toutes les entrées qui se terminaient par un - puis un nombre comportant jusqu'à 5 chiffres comportant:
La plupart du temps, cela a fonctionné, mais il me reste encore 2 lignes à chaque réindexation. Pas certain de pourquoi. Je pensais partager cette expérience.
la source
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
Le changement fondamental que vous avez mentionné ne semble être nécessaire que si vous avez des produits sans url_keys. Cependant, Magento devrait toujours créer url_keys pour vous. Si vous avez un importateur qui crée des produits sans url_keys, alors ce problème se posera pour ces produits. Essayez d'exécuter la requête suivante pour trouver de tels produits:
Si des produits renvoient à partir de cette requête, ils n'ont pas de clé url et vont poser problème.
la source
entity_type_id
par défaut pour les produits est 4 et non pas 10.J'ai suivi une solution approuvée pour empêcher les réécritures d'URL en double, puis exporté
core_url_rewrite
sous forme de fichier CSV. A pu ouvrir ce fichier CSV et supprimer toutes les réécritures d'URL créées manuellement.Ensuite, j'ai tronqué la
core_url_rewrite
table et importé mon CSV enregistré avec les réécritures d'URL créées manuellement.Après tous les changements, est passé de 940K lignes à 32K. Énorme amélioration.
la source
Voici le correctif (réécriture locale) de la communauté Magento pour le correctif que https://github.com/biotech/Magento-URL-Rewrite est identique au correctif EE PATCH_SUPEE-389_EE_1.12.0.2_v2.sh . éviter la création d'enregistrements dupliqués. Fonctionne bien depuis 2 mois sur la production CE 1,9, 15 000 produits, 4 magasins, réindexation complète chaque nuit après modification de l'importation de produits en vrac.
la source
Comme cela n’est pas encore mentionné dans ce fil de discussion, j’ai voulu partager la bonne nouvelle que ce problème est résolu dans Magento 1.9.3.9 et versions ultérieures. Voir les notes de publication associées :
Ainsi, tous les correctifs pour ce problème mentionné ici ne sont pas nécessaires lors de l'utilisation d'une version de Magento supérieure ou égale à 1.9.3.9. Je suggère toujours de supprimer les anciennes valeurs comme décrit dans la réponse d'Alex .
la source
Exécuter cette requête
Cela vous aidera sûrement à réduire la taille de la
core_url_size
table en supprimant les données indésirables.la source
Se débarrasser de
.html
.html
Mettre en .htaccess
Effacer toutes les
.html
redirections:la source
La réponse officielle devrait être d'installer SUPEE-389. Aussi simple que cela.
Cela fonctionne parfaitement avec Magento CE, car ils partagent le même code dans ce domaine.
Vous pouvez trouver le fichier de correctif ici: https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
Nous avons eu ce problème et il a généré des milliers de nouvelles lignes après chaque réindexation des URL du catalogue. Maintenant, le problème a disparu ... sauf que nous devons nettoyer la base de données.
Le script fourni ici semble être un bon début, mais ce n’est pas une solution parfaite,
Voir https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
la source
Un module dédié , https://github.com/vladsmirnov/url-rewrites , vous évite de réappliquer le correctif après chaque mise à jour Magento. Le module contient deux parties: le module actuel, pour éviter la duplication dorénavant, et le script shell pour nettoyer la base de données existante.
la source