Après plusieurs importations foirées, il me reste une charge de réécritures d'URL que je dois supprimer.
J'utilise Enterprise 1.13
Quand j'ai eu ce problème dans la communauté, j'ai simplement tronqué core_url_rewrite
et réindexé.
Cependant, dans Enterprise, je remarque qu'il existe un certain nombre de tables différentes qui contrôlent les réécritures.
enterprise_url_rewrite
enterprise_url_rewrite_category_cl
enterprise_url_rewrite_product_cl
enterprise_url_rewrite_redirect
enterprise_url_rewrite_redirect_cl
enterprise_url_rewrite_redirect_rewrite
Suis-je sûr de les tronquer tous?
J'anticipe pleinement que quelqu'un me dise que je ne devrais jamais tronquer ces tableaux, donc excuses pour la naïveté à l'avance.
magento-enterprise
url-rewrite
ee-1.13
JamesAllwood
la source
la source
core_url_rewrite
et cela a fonctionné.Réponses:
Nous nous sommes dans la même situation que toi James. Après beaucoup de fouilles, voici ce que j'ai trouvé:
Le
core_url_rewrite
tableau est désormais obsolète, mais Magento EE 1.13 stocke désormais les réécritures dansenterprise_url_rewrite
.Tables:
enterprise_*_category_rewrite
utilisez descatalog_*_entity_url_key
tables pour reconstruire les deux tables de réécriture lorsque vous exécutezphp indexer.php --reindex catalog_url_*
Lorsque vous ajoutez une `` redirection d'URL '' dans le catalogue d'administration -> URL redirige pour une URL personnalisée, elle est ajoutée à la
enterprise_url_rewrite_redirect
table et l'indicateur pour Magento que l'index est désormais obsolète est entré dans laenterprise_url_rewrite_redirect_cl
table qui lors de l'exécutionphp indexer.php --reindex url_redirect
reconstruit laenterprise_url_rewrite_redirect_rewrite
table.Remarque rapide, toute table se terminant par _cl est sûre à tronquer, le «CL» signifie Change Log et est utilisé par Magento pour vérifier si une réindexation est requise.
En ce qui concerne les tables de clés d'URL, je ne sais toujours pas pourquoi il y a deux entrées de clé d'URL une
catalog_*_entity_url_key
et unecatalog_*_entity_varchar
(attribut id 90), mais je suppose que c'est ce qui se passe:Lorsque vous créez un nouveau produit / catégorie, Magento utilise le nom pour générer une clé url qui est placée dans
catalog_*_entity_url_key
AND dans lecatalog_*_entity_varchar
, mais la table principale utilisée par Magento est lacatalog_*_entity_url_key
car si vous la tronquez et exécutez,php indexer.php --reindex catalog_url_*
vosenterprise_*_category_rewrite
tables seront vides et les produits / catégories dans le frontend affichera des URL moche c'est-à-direhttp://example.com/catalog/product/view/id/123/etc/etc
(pas SOE amical) Je crois que les deux tables sont liées et sont utilisées pour construire laenterprise_url_rewrite
table parce que cette table stocke un 'request_path' très probablement l'url_key à l'intérieur de lacatalog_*_entity_varchar
table et un 'identifiant' qui est le principal Clé URL ducatalog_*_entity_url_key
tableau. Je peux me tromper complètement sur les tables url_key et varchar, donc je pense juste à haute voix.Quoi qu'il en soit, pour tronquer et reconstruire toutes les tables de réécriture, vous pouvez exécuter:
puis exécutez:
Si vous tronquez également,
enterprise_url_rewrite_redirect
vous perdrez toutes vos redirections personnalisées que vous voyez dans votre panneau d'administration, c'est peut-être votre objectif puisque vous vous retrouvez avec une tonne d'URL inutiles. Tant que vous NE tronquerez PAS les tables '* _entity_url_key', tout ira bien.Notre histoire était un peu différente, car nous avons eu des clés URL en double et des problèmes majeurs avec les noms de produits des importations Excel après la mise à niveau vers 1.13 à partir de 1.11, j'ai donc écrit ce script rapide pour réinitialiser la
catalog_product_entity_url_key
table et les clés URL et les chemins URL dans lacatalog_product_entity_varchar
table en utilisant le produit noms. J'ai joint le code ci-dessous, mais si vous l'utilisez, utilisez-le à vos risques et périls.Le code peut être modifié pour utiliser la méthode Magentos formatKey ici: http://www.magentocommerce.com/wiki/3_-_store_setup_and_management/seo/url_key_characters_conversion malheureusement, je suis tombé sur le wiki après avoir mis à jour toutes les clés, donc je n'ai pas pris la peine de mettre à jour tout à nouveau.
J'espère que ça t'as aidé :)!
la source
sudo php indexer.php --reindex catalog_url_catalog
devrait êtresudo php indexer.php --reindex catalog_url_category
.catalog/product/view/id/XXX/category/YYY
. Pouvez-vous confirmer que c'est la même chose pour vous? Je suis un peu ignorant à ce sujet ... Est-ce un bug, ou est-ce que je fais quelque chose de mal? J'ai essayé de faire la même chose sur une nouvelle installation de 1.13.0.2, la même chose s'est produite. Réécrit fonctionne bien en frontend, mais aucune catégorie n'est définie.Sur la base de ce que j'ai vu déconner avec EE 1.13 dans un environnement de test et de petits tests rapides que je viens de faire, vous devriez être en mesure de tronquer ces tables simplement, puis de reconstruire manuellement tous les index d'URL à partir de la CLI.
Les tables * _cl sont utilisées dans les TRIGGERS trouvés sur la
catalog_product_entity_url_key
table. Les enregistrements qu'ils insèrent dans ces tables * _cl sont ce qui, je pense, est utilisé pour indiquer ce qui doit être réindexé après les sauvegardes.Voici ce que j'ai fait. Après avoir utilisé l'outil CLI pour recréer les index, tout semblait bien fonctionner. Troncature MySql…
Puis sur la CLI…
Faites-nous part de vos résultats… comme Marius, je n'ai pas encore construit de site EE 1.13 et je n'ai que l'expérience de jouer avec lui depuis Imagine. :)
la source
enterprise_url_rewrite
vscore_url_rewrite
comme avant. Lescatalog_*_entity_url_key
tables semblent être une table répliquée avec les clés url à utiliser par l'indexeur, et ce sont aussi les tables avec les déclencheurs liés aux réécritures d'URL.Une note concernant l'utilisation de TRUNCATE:
donne une erreur à cause des références de clés étrangères:
L'exécution de commandes de troncature / suppression comme celle-ci fonctionnerait:
la source
SET FOREIGN_KEY_CHECKS = 0;
avantTRUNCATE ...
etSET FOREIGN_KEY_CHECKS = 1;
tout en bas, aprèsDELETE FROM ...
La réponse simple est non, il n'est pas sûr de tronquer ces tableaux, du moins si vous ne connaissez pas la conséquence:
Toutefois:
Catalog -> Url Redirect
sera vide (sur EE 1.13.1)(qui ressemble à un bugselon Magento c'est le comportement attendu sur 1.13.1) (voir aussi commentaire ci-dessous)la source
Catalog -> Url Redirect
seules les réécritures non système sont affichées. Ainsi, seules vos réécritures personnalisées s'afficheront ici. c'est-à-dire des lignes avecenterprise_url_rewrite.system = 0
.