dlaczego powielanie adresu URL produktu Magento


10

Używam magento 1.7. mam do czynienia z dziwnym problemem. magentotworzenie zduplikowanego adresu URL produktu z losową liczbą z niewłaściwym kluczem adresu URL proszę o dołączony zrzut ekranu

Ja też pusty stół rewrite_urlsi adresy reindex ale nadal otrzymuję błędne adresy URL. pomóż mi rozwiązać ten problem. jeśli nie możesz wyświetlić obrazów, o których mowa, kliknij linki, które prowadzą do zduplikowania adresów produktów i produktu w panelu administracyjnym

Zduplikowane adresy URL produktów,rzeczywisty produkt

Pozwól mi zrozumieć cię na przykładzie

Tak jak mam jeden produkt o nazwie „przykład”, a kluczem adresu URL jest „przykład”

www.example.com/example

a teraz utworzyłem nowy produkt „xyz i klucz url to„ xyz ”, a adres URL powinien być

www.example.com/xyz

ale URL generujący magento

www.example.com/example-123

Masz na myśli stół core_url_rewrite?
Fabian Blechschmidt,

tak, mam na myśli core_url_rewrite

Dzieje się tak, ponieważ masz / miałeś 2 produkty z tym samym kluczem adresu URL. Spróbuj ponownie obciąć core_url_rewritetabelę i ponownie uruchomić indeksowanie URL url.
Dmytro Zavalkin

nie, sprawdziłem, że mam unikalne klucze adresu URL i już wypróbowałem tę opcję „Spróbuj obciąć tabelę core_url_rewrite i ponownie uruchomić url przepisuje indeksator”

Odpowiedzi:


6

To wydaje się być błędem w wersji 1.7. Jeśli masz wiele prostych produktów z tym samym kluczem adresu URL co produkt konfigurowalny (np. Wszystkie nazwy są takie same), wtedy magento zawsze tworzy nowe przepisywanie adresów URL przy każdym procesie indeksowania. Przykład:

Pierwszy indeks:

  • myproducturl (produkt konfiguracyjny)
  • myproducturl-id (prosty produkt z dołączonym identyfikatorem, jak dotąd jak dotąd dobry)

Drugi indeks:

  • myproducturl (produkt konfiguracyjny)
  • myproducturl-randomnumber (prosty produkt z losową liczbą, BAD)
  • myproducturl-id -> myproducturl-randomnumber (przepisz do nowego adresu URL)

I przy każdym nowym procesie indeksowania ostatni krok będzie powtarzany, więc zawsze generowany jest nowy losowy klucz adresu URL. Jeśli Magento sprawdzi, czy klucz URL z identyfikatorem dla tego produktu już istnieje, nie powinno to stanowić problemu.

Po kilku miesiącach będziesz mieć naprawdę dużą tabelę url_rewrite, ponieważ nic nie zostanie usunięte, a przy każdym uruchomieniu utworzony zostanie co najmniej 1 rekord dla każdego produktu z tym samym kluczem url.


To spowodowało dla nas duże problemy. Mamy 1 produkt z 20 wariantami kolorystycznymi i 8 rozmiarami każdego, dlatego mamy wiele prostych produktów, które importujemy o tej samej nazwie. Ponieważ klucz adresu URL jest nazwą, jeśli nie jest określony, powstaje wiele duplikatów. Irytujące jest to, że nie mamy nawet dostępnych pojedynczych próbek (co sprawia, że ​​kpiny z nich uzyskują indeks w pierwszej kolejności). W pewnym stopniu udało nam się to obejść, importując simples sku jako część jego nazwy, ponieważ nie jest to widoczne na froncie, uciekamy od tego.
Peter O'Callaghan

Mam również do czynienia z tym problemem, a moja tabela przepisywania adresów URL zawiera ponad 80 000 wpisów dla zaledwie 4000 produktów. Jeśli ktoś ma jakieś dodatkowe informacje na ten temat, proszę dać mi znać.
andyjv,

Istnieje łatka dla przedsiębiorstw, która rozwiązuje ten problem dla CE.
brentwpeterson

@brentwpeterson Czy znasz identyfikator tej poprawki?
Paul


7

Ten błąd również nas dotknął. Ponownie indeksujemy codziennie i uzyskaliśmy 24 000 adresów URL w ciągu zaledwie kilku dni dla około 1000 produktów.

Myślę, że mogłem znaleźć rozwiązanie tego problemu. Udostępniłem tę poprawkę na żywo w naszej witrynie produkcyjnej i zobaczę, jak będzie. Przydałoby się, gdyby inni mogli przetestować.

  1. Jeśli coś pójdzie nie tak, wykonaj kopię zapasową tabeli i danych core_url_rewrite

  2. W aplikacji / code / core / Mage / Catalog / Model / Url.php zmień wiersz 809

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

    do

    if (!empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        ) 
  3. Obetnij (opróżnij) tabelę core_url_rewrite

  4. W obszarze System -> Zarządzanie indeksem ponownie indeksuj adres URL katalogu Ponownie zapisuje dane

Powinieneś być teraz w stanie ponownie indeksować bez tworzenia tysięcy losowych przeróbek adresów URL.

Dzięki Jahnni i snowcountry za poprawkę - przeczytaj więcej na ten temat tutaj: http://www.magentocommerce.com/boards/viewthread/416476/

Zgłoszenie błędu tutaj: http://www.magentocommerce.com/bug-tracking/issue?issue=15048


To zadziałało dla mnie. Upvoted
sulabh

Nie sądzę, aby działało to poprawnie w wersji 1.9.x. Zobacz tutaj poprawkę: gist.github.com/edannenberg/5310008
BlueC

0

Nowy:

To jest szalone. Wygląda na problem z buforowaniem !? Coś w procesie indeksowania jest zepsute, ale nie mam pojęcia, przepraszam.

Stary:

Nie mam pojęcia, dlaczego tak się dzieje, ale zapisuję swoje doświadczenie i pomysły:

  1. Kiedy Magento znajdzie już istniejące przepisanie, dołącza liczbę zliczającą.

  2. Po zmianie przepisywania magento tworzy przepisywanie starego adresu URL (jeśli pole wyboru pod polem wprowadzania tekstu jest zaznaczone).

  3. Myślę, że niestandardowe przepisywanie adresów URL może być zapisane gdzie indziej, więc niestandardowe przepisywania są najpierw stosowane, a następnie próbuje się dodać przepisane produkty, a jeśli nie jest to możliwe, licznik jest dodawany?


proszę zobaczyć moje pytanie, zaktualizowałem je ponownie twój post nie jest dla mnie teraz przydatny

zaktualizowałem odpowiedź, ale nie była pomocna :(
Fabian Blechschmidt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.