почему дублирование URL продукта magento

10

Я использую magento 1.7. Я сталкиваюсь со странной проблемой. magentoСоздание дубликата URL продукта со случайным числом с неправильным ключом URL, пожалуйста, мой прикрепленный скриншот

Я также rewrite_urlsочищаю таблицу и переиндексирую URL, но все равно получаю неправильные ссылки. Пожалуйста, помогите мне решить эту проблему. если вы не можете просмотреть изображения, о которых идет речь, нажмите ссылки на дубликаты URL-адресов продуктов и продуктов в админ-панели.

Двойные URL продукта,фактический продукт

Позвольте мне понять вас с примером

Как у меня есть один продукт с именем «пример» и URL-адрес «пример» URL будет

www.example.com/example

и теперь я создал новый продукт "XYZ и URL-адрес" XYZ "и URL должен быть

www.example.com/xyz

но генерирующий URL

www.example.com/example-123

источник
Вы имеете в виду стол core_url_rewrite?
Фабиан Блехшмидт
да, я имею в виду core_url_rewrite
Это происходит потому, что у вас / было 2 продукта с одинаковым URL-ключом. Попробуйте усечь core_url_rewriteтаблицу abd run url перезаписывает индексатор снова.
Дмитрий Завалкин
Нет, я проверил, у меня есть уникальные URL-ключи, и я уже попробовал эту опцию "Попробуйте усечь таблицу core_url_rewrite и снова запустите URL-адрес перезаписывает индексатор"

Ответы:

6

Это похоже на ошибку в 1.7. Если у вас есть несколько простых продуктов с тем же ключом URL, что и у конфигурируемого продукта (например, все имена одинаковы), тогда magento всегда создает новый перезапись URL в каждом процессе индекса. Пример:

Первый индекс:

  • myproducturl (конфигурация продукта)
  • myproducturl-id (простой продукт с добавленным идентификатором, пока все хорошо)

Второй индекс:

  • myproducturl (конфигурация продукта)
  • myproducturl-randomnumber (простой продукт со случайным числом, BAD)
  • myproducturl-id -> myproducturl-randomnumber (переписать на новый URL)

И при каждом новом процессе индексации последний шаг будет повторяться, поэтому всегда генерируется новый случайный ключ URL. Если magento проверит, что URL-ключ с идентификатором для этого продукта уже существует, это не должно быть проблемой.

Через несколько месяцев у вас будет действительно большая таблица url_rewrite, потому что ничего не будет удалено, и при каждом запуске будет создаваться как минимум 1 запись для каждого продукта с одинаковым ключом URL.

Винс Рой
источник
Это вызвало у нас большие проблемы. У нас есть 1 продукт с 20 цветовыми вариациями и 8 размерами каждого, таким образом, у нас есть МНОГО простых продуктов, которые импортируются с тем же именем. Так как ключ url - это имя, если оно не указано, мы получаем много дубликатов. Раздражает то, что у нас даже нет простых доступных по отдельности (что делает насмешку над тем, чтобы они получали индекс в первую очередь). Мы обошли это до некоторой степени, импортировав простой sku как часть его имени, так как он не виден на переднем крае, нам это сходит с рук.
Питер О'Каллаган
Я также сталкиваюсь с этой проблемой, и моя таблица перезаписи URL содержит более 80 000 записей всего для 4000 продуктов. Если у кого-то есть дополнительная информация по этому вопросу, пожалуйста, дайте мне знать.
andyjv
Существует Enterprise Patch, который решает эту проблему для CE.
Brentwpeterson
@brentwpeterson Знаете ли вы идентификатор для этого патча?
Пол
1
SUPEE_389_EE - magento.stackexchange.com/questions/32159/…
brentwpeterson
7

Мы тоже столкнулись с этой ошибкой. Мы переиндексируем каждый день и за несколько дней набрали 24 000 URL-адресов для примерно 1000 продуктов.

Я полагаю, что, возможно, нашел решение для этого. Я разместил это исправление в прямом эфире на нашей производственной площадке и посмотрю, как оно будет работать. Если другие могут проверить это было бы полезно.

  1. Если что-то пошло не так, сделайте резервную копию таблицы core_url_rewrite и данных

  2. В приложении / код / ​​ядро ​​/ маг / каталог / модель / 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

BlueC
источник
Это сработало для меня. Проголосовал
sulabh
Я не думаю, что это работает правильно на 1.9.x. Смотрите здесь для исправления: gist.github.com/edannenberg/5310008
BlueC
0

Новое:

Это безумие. Похоже на проблему кеширования !? Что-то в процессе индексации не работает, но не знаю, извините.

Старый:

Я понятия не имею, почему это происходит, но я записываю свой опыт и мои идеи:

  1. Когда Magento находит уже существующую перезапись, он добавляет счетный номер.

  2. При изменении перезаписи magento создает перезапись для старого URL (если установлен флажок под полем ввода текста).

  3. Я думаю, что пользовательские перезаписи URL могут быть сохранены где-то еще, поэтому пользовательские перезаписи применяются в первую очередь, а затем пробуется добавить продукт переписывает, и если это невозможно, счетчик добавляется?

Фабиан Блехшмидт
источник
пожалуйста, посмотрите мой вопрос, я обновил его снова. Ваше сообщение сейчас мне не подходит
обновил ответ, но не помог :(
Фабиан Блехшмидт