6

製品の新しい URL 書き換えを作成するかどうかを Magento がどのように決定するかについて、誰か光を当てることができますか? Catalog URL Rewrite reindex プロセスを実行するたびに、core_url_rewrite の行数が約 10,000 行ずつ増加します。その間、製品データは変更されていないのに、新しい URL が生成されるのはなぜですか?

4

4 に答える 4

2

この問題は Magento 1.7 にも存在しますが、1.8 または 1.9 についてはわかりません。Magento は古いエントリを削除しないようです。これにより、データベースが大幅に遅くなる可能性があります。これを解決する最も簡単な方法は、テーブルを切り捨ててインデックスを再作成することです。

  • mysql にログインし、適切なデータベースを選択 (使用) します。
  • 次のクエリを実行します。truncate table core_url_rewrite;
  • Magento ルート (コマンドライン) のシェル フォルダーに移動し、次のコマンドを実行します。php -f indexer.php -- -reindex catalog_url
  • または、管理者でこれを行うこともできます: システム > インデックス管理; 再インデックス カタログ URL の書き換え

次に、管理者を確認します: [カタログ] > [URL 書き換え管理] で、新しいエントリが作成されているかどうかを確認します。これにアイテムが表示されない場合、URL の書き換えは機能しません。

于 2015-01-09T10:59:14.733 に答える
0

次の SQL を実行して、存在しない製品に属する URL を見つけることができます。

SELECT `cur`.`product_id`
FROM `core_url_rewrite` AS `cur`
LEFT OUTER JOIN `catalog_product_entity` AS `cpe`
ON `cur`.`product_id` = `cpe`.`entity_id`
WHERE `cpe`.`entity_id` IS NULL
AND `cur`.`product_id` IS NOT NULL

... に存在しない entity_ids のリストが表示されるはずです

`catalog_product_entity`

EcomDev には無料の URL 書き換えモジュール ( http://shop.ecomdev.org/url-rewrite-indexer.html ) があり、これは便利だと思います。

編集

質問に答えるために、新しい URL が生成されます。これは、URL の再インデックス作成が次の方法で開始されるためです。

Mage_Catalog_Model_Indexer_Url::reindexAll()

...これはラッパーです:

Mage_Catalog_Model_Url::refreshRewrites

... データが変更されているかどうかはチェックされません。それが必要な場合は、そのクラスをオーバーライドし、機能を書き直して違いを比較できます。

于 2012-11-12T20:22:41.613 に答える
0

私は Magento 1.8 を使用しており、私の core_url_rewrite テーブルには約 500 万ありました!!!! 記録。最後に、関数 beforeSave を Mage_Catalog_Model_Product_Attribute_Backend_Urlkey に上書きし、製品名の最初の 5 語から独自の URL キーを生成しました。最初の 5 つの単語が一意でない場合は、いくつかの数字を追加します。誰かが私のコードに興味を持っている場合は、いくつかのスニペットを投稿できます。

Mage_Catalog_Model_Product_Attribute_Backend_Urlkey を上書きした後、core_url_rewrite を切り捨て、インデックスを再構築しました。最終的に、約 60.000 の URL を取得しました...そして、再インデックス プロセスは新しい URL を追加しません。

ただし、core_url_rewrite テーブルを切り捨てて再構築すると、カスタム URL の書き換えが失われることに注意する必要があります。また、seo の頭に予期しない問題が発生することもあります。すべての 302er リダイレクトが失われる原因

乾杯

于 2015-03-11T15:14:11.807 に答える