Warum Magento Produkt URL duplizieren


10

Ich benutze magento 1.7. Ich stehe vor einem seltsamen Problem. magentoWenn Sie eine doppelte Produkt-URL mit einer Zufallszahl und einem falschen URL-Schlüssel erstellen, klicken Sie bitte auf meinen angehängten Screenshot

Ich leere auch Tabellen- rewrite_urlsund Neuindizierungs-URLs, aber ich bekomme immer noch falsche URLs. Bitte helfen Sie mir, dieses Problem zu lösen. Wenn Sie die betreffenden Bilder nicht anzeigen können, klicken Sie bitte auf Links, um die Produkt-URLs und das Produkt im Admin-Bereich zu duplizieren

Doppelte Produkt-URLs,tatsächliches Produkt

Lass mich dich anhand eines Beispiels verstehen

Als hätte ich ein Produkt namens "Beispiel" und URL-Schlüssel ist "Beispiel" URL wird sein

www.example.com/example

und jetzt habe ich neues Produkt erstellt "xyz und URL-Schlüssel ist" xyz "und URL sollte sein

www.example.com/xyz

aber Magento erzeugende URL

www.example.com/example-123

Du meinst den Tisch core_url_rewrite?
Fabian Blechschmidt

Ja, ich meine core_url_rewrite

Es passiert, weil Sie 2 Produkte mit demselben URL-Schlüssel haben / hatten. Versuchen Sie, die core_url_rewriteTabelle abzuschneiden und den URL-Indexer erneut auszuführen.
Dmytro Zavalkin

Nein, ich habe überprüft, ob ich eindeutige URL-Schlüssel habe, und ich habe diese Option bereits ausprobiert. "Versuchen Sie, die Tabelle core_url_rewrite abzuschneiden und den URL-Indexer erneut

Antworten:


6

Dies scheint ein Fehler in 1.7 zu sein. Wenn Sie mehrere einfache Produkte mit demselben URL-Schlüssel wie das konfigurierbare Produkt haben (z. B. sind alle Namen gleich), erstellt Magento bei jedem Indexprozess immer eine neue URL-Umschreibung. Beispiel:

Erster Index:

  • myproducturl (Konfigurationsprodukt)
  • myproducturl-id (einfaches Produkt mit angehängter ID, soweit so gut)

Zweiter Index:

  • myproducturl (Konfigurationsprodukt)
  • myproducturl-randomnumber (einfaches Produkt mit Zufallszahl, BAD)
  • myproducturl-id -> myproducturl-randomnumber (auf die neue URL umschreiben)

Und bei jedem neuen Indexprozess wird der letzte Schritt wiederholt, sodass immer ein neuer zufälliger URL-Schlüssel generiert wird. Wenn Magento überprüfen würde, ob bereits ein URL-Schlüssel mit der ID für dieses Produkt vorhanden ist, sollte dies kein Problem sein.

Nach einigen Monaten haben Sie eine wirklich große url_rewrite-Tabelle, da nichts gelöscht wird und bei jedem Lauf mindestens 1 Datensatz für jedes Produkt mit demselben URL-Schlüssel erstellt wird.


Dies hat uns große Probleme bereitet. Wir haben 1 Produkt mit 20 Farbvarianten und jeweils 8 Größen, daher haben wir viele einfache Produkte, die mit demselben Namen importiert werden. Da der URL-Schlüssel der Name ist, wenn keiner angegeben ist, erhalten wir viele Duplikate. Das ärgerliche ist, dass wir nicht einmal Simples einzeln zugänglich haben (was einen Spott darüber macht, dass sie überhaupt einen Index erhalten). Wir haben dies bis zu einem gewissen Grad umgangen, indem wir den Simples-Sku als Teil seines Namens importiert haben, da er am Frontend nicht sichtbar ist.
Peter O'Callaghan

Ich bin auch mit diesem Problem konfrontiert, und meine URL-Umschreibungstabelle enthält über 80.000 Einträge für nur 4000 Produkte. Wenn jemand weitere Informationen dazu hat, lass es mich wissen.
Andyjv

Es gibt einen Enterprise Patch, der dieses Problem für CE behebt.
Brentwpeterson

@brentwpeterson Kennen Sie die ID für diesen Patch?
Paul


7

Wir sind auch von diesem Fehler betroffen. Wir indizieren jeden Tag neu und haben in nur wenigen Tagen 24.000 URLs für rund 1000 Produkte erhalten.

Ich glaube, ich habe vielleicht eine Lösung dafür gefunden. Ich habe dieses Update live auf unserer Produktionsseite veröffentlicht und werde sehen, wie es geht. Wenn andere testen können, wäre es nützlich.

  1. Falls etwas schief geht, erstellen Sie eine Sicherungskopie der Tabelle und der Daten von core_url_rewrite

  2. In app / code / core / Mage / Catalog / Model / Url.php Zeile 809 ändern

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

    zu

    if (!empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        ) 
  3. Schneiden Sie die Tabelle core_url_rewrite ab (leer)

  4. Indizieren Sie unter System -> Indexverwaltung die Daten der Katalog-URL neu

Sie sollten jetzt in der Lage sein, erneut zu indizieren, ohne Tausende von zufälligen URL-Umschreibungen zu erstellen.

Vielen Dank an Jahnni und snowcountry für das Update - lesen Sie hier mehr darüber: http://www.magentocommerce.com/boards/viewthread/416476/

Fehlerbericht hier: http://www.magentocommerce.com/bug-tracking/issue?issue=15048


Das hat bei mir funktioniert. Upvoted
Sulabh

Ich denke nicht, dass dies unter 1.9.x richtig funktioniert. Siehe hier für eine funktionierende Lösung: gist.github.com/edannenberg/5310008
BlueC

0

Neu:

Das ist verrückt. Sieht aus wie ein Caching-Problem!? Etwas im Indizierungsprozess ist kaputt, aber keine Ahnung, sorry.

Alt:

Ich habe keine Ahnung, warum dies passiert, aber ich schreibe meine Erfahrungen und meine Ideen auf:

  1. Wenn Magento eine bereits vorhandene Umschreibung findet, wird eine Zählnummer angehängt.

  2. Wenn Sie das Umschreiben ändern, erstellt Magento ein Umschreiben für die alte URL (wenn das Kontrollkästchen unter dem Texteingabefeld aktiviert ist).

  3. Ich denke, die benutzerdefinierten URL-Umschreibungen werden möglicherweise an einer anderen Stelle gespeichert, sodass die benutzerdefinierten Umschreibungen zuerst angewendet werden und anschließend versucht wird, die Produktumschreibungen hinzuzufügen. Wenn dies nicht möglich ist, wird der Zähler hinzugefügt.


Bitte sehen Sie meine Frage, ich habe es erneut aktualisiert. Ihr Beitrag ist

aktualisierte die Antwort, aber nicht hilfreich :(
Fabian Blechschmidt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.