magento製品のURLが重複する理由


10

使用していmagento 1.7ます。私は奇妙な問題に直面しています。magento間違ったURLキーで乱数を含む製品URLを複製する

また、テーブルrewrite_urlsを空にしてURLのインデックスを再作成しますが、それでも間違ったURLを取得しています。この問題の解決を手伝ってください。問題の画像を表示できない場合は、リンクをクリックしてください。製品のURL管理パネルの製品が重複しています。

商品のURLが重複しています実際の商品

例であなたを理解させましょう

「example」という名前の製品が1つあり、URLキーが「example」のように、URLは

www.example.com/example

そして今、私は新製品「xyz」を作成し、URLキーは「xyz」であり、URLは

www.example.com/xyz

しかし、マジェント生成URL

www.example.com/example-123

テーブルのことcore_url_rewriteですか?
Fabian Blechschmidt 2013年

はい、私はcore_url_rewriteを意味します

これは、同じURLキーを持つ2つの製品があるか、持っていたために発生します。core_url_rewrite再度テーブルを切り捨てて、実行URLがインデクサーを書き換えます。
Dmytro Zavalkin 2013年

いいえ、一意のURLキーがあることを確認し、すでにこのオプションを試しました。「core_url_rewriteテーブルを切り捨て、abd run url rewrites

回答:


6

これは1.7のバグのようです。構成可能な製品と同じURLキーを持つ複数の単純な製品がある場合(たとえば、すべての名前が同じである場合)、magentoは常にすべてのインデックスプロセスで新しいURL書き換えを作成します。例:

最初のインデックス:

  • myproducturl(構成製品)
  • myproducturl-id(IDが追加された単純な製品、これまでのところこれまでのところ良好)

2番目のインデックス:

  • myproducturl(構成製品)
  • myproducturl-randomnumber(乱数を持つ単純な製品、BAD)
  • myproducturl-id-> myproducturl-randomnumber(新しいURLに書き換えます)

そして、すべての新しいインデックスプロセスで最後のステップが繰り返されるため、常に新しいランダムなURLキーが生成されます。magentoがその製品のIDを持つURLキーがすでに存在することを確認する場合、これは問題ありません。

数か月後には、非常に大きなurl_rewriteテーブルが作成されます。何も削除されず、実行するたびに、同じurlキーを持つすべての製品に対して少なくとも1つのレコードが作成されます。


これは私たちにとって大きな問題を引き起こしています。20のカラーバリエーションと8つのサイズの1つの製品があるため、同じ名前でインポートされるシンプルな製品がたくさんあります。URLキーは、指定されていない場合は名前であるため、多くの重複が発生します。厄介なことに、個別にアクセスできるシンプルなものすらありません(そもそも、インデックスを取得するというあざけりです)。simples skuを名前の一部としてインポートすることで、これをある程度回避しました。フロントエンドには表示されないため、skuを名前の一部として使用しています。
Peter O'Callaghan 2013

私もこの問題に直面しており、私のURL書き換えテーブルは、わずか4000製品で80,000エントリを超えています。これについてさらに詳しい情報がありましたら、お知らせください。
andyjv 2013年

このCEの問題を解決するエンタープライズパッチがあります。
brentwpeterson 2014

@brentwpetersonそのパッチのIDを知っていますか?
Paul


7

このバグにも遭遇しました。私たちは毎日インデックスを再作成し、約1000製品の数日で24,000のURLを取得しました。

私はそれに対する修正を見つけたと思います。私はこの修正を本番サイトにライブで配置しました。他の人がテストできるなら、それは役に立ちます。

  1. 問題が発生した場合に備えて、core_url_rewriteテーブルとデータのバックアップを作成します

  2. app / code / core / Mage / Catalog / Model / Url.php行809の変更

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

    if (!empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        ) 
    
  3. core_url_rewriteテーブルを切り捨てる(空にする)

  4. [システム]-> [インデックス管理]で、カタログURLのインデックスを再作成し、データを書き換えます

これで、何千ものランダムなURL書き換えを作成せずに、再度インデックスを作成できるようになります。

修正を行ったJahnniとsnowcountryに感謝します。詳細については、http//www.magentocommerce.com/boards/viewthread/416476/を参照してください。

バグレポートはこちら:http : //www.magentocommerce.com/bug-tracking/issue?issue=15048


これでうまくいきました。賛成
スラブ

これは1.9.xでは正しく動作しないと思います。動作する修正については、ここを参照してください:gist.github.com/edannenberg/5310008
BlueC

0

新着:

狂ってる。キャッシュの問題のようです!?インデックス作成プロセスのどこかが壊れていますが、わかりません。

古い:

私はこれがなぜ起こるのか分かりませんが、私の経験と私の考えを書き留めます。

  1. Magentoは既存の書き換えを検出すると、カウント数を追加します。

  2. リライトを変更すると、magentoは古いURLのリライトを作成します(テキスト入力フィールドの下のチェックボックスがチェックされている場合)。

  3. カスタムURLの書き換えは別の場所に保存されている可能性があるので、カスタムの書き換えを最初に適用し、その後に製品の書き換えを追加しようとし、それが不可能な場合はカウンターを追加しますか?


私の質問を参照してください。もう一度更新しました。あなたの投稿は今の

答えは更新されましたが、役に立ちませんでした:(
Fabian Blechschmidt '25 / 03/13
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.