¿Por qué duplicar la URL del producto magento?

10

Estoy usando magento 1.7. Estoy enfrentando un extraño problema. magentohaciendo una URL de producto duplicada con un número aleatorio con una clave de URL incorrecta, por favor mi captura de pantalla adjunta

También vacío la tabla rewrite_urlsy reindexo las URL, pero aún así obtengo las URL incorrectas. Por favor ayúdame a resolver este problema. si no puede ver las imágenes en cuestión, haga clic en los enlaces URL de productos duplicados y Producto en el panel de administración

URL de producto duplicadas,producto actual

Déjame hacerte entender con el ejemplo

Como si tuviera un producto llamado "ejemplo" y la clave de url es "ejemplo", la URL será

www.example.com/example

y ahora he creado un nuevo producto "xyz y la clave de url es" xyz "y la url debería ser

www.example.com/xyz

pero magento genera url

www.example.com/example-123

fuente
¿Te refieres a la mesa core_url_rewrite?
Fabian Blechschmidt
sí, me refiero a core_url_rewrite
Ocurre porque tiene / tuvo 2 productos con la misma clave de URL. Intente truncar la core_url_rewritetabla y ejecutar url reescribe el indexador nuevamente.
Dmytro Zavalkin
no, he comprobado que tengo claves de URL únicas y ya he probado esta opción "Intentar truncar la tabla core_url_rewrite y ejecutar url reescribe el indexador de nuevo"

Respuestas:

6

Esto parece ser un error en 1.7. Si tiene múltiples productos simples con la misma clave de URL que el producto configurable (por ejemplo, todos los nombres son iguales), entonces magento siempre crea una nueva reescritura de URL en cada proceso de índice. Ejemplo:

Primer índice:

  • myproducturl (producto de configuración)
  • myproducturl-id (producto simple con su ID adjunto, hasta ahora muy bueno)

Segundo índice:

  • myproducturl (producto de configuración)
  • myproducturl-randomnumber (producto simple con número aleatorio, MALO)
  • myproducturl-id -> myproducturl-randomnumber (reescribir a la nueva url)

Y en cada nuevo proceso de índice se repetirá el último paso, por lo que siempre se genera una nueva clave de URL aleatoria. Si magento verificara que ya existe una clave de URL con la identificación de ese producto, esto no debería ser un problema.

Después de unos meses, tendrá una tabla url_rewrite realmente grande, ya que no se eliminará nada y en cada ejecución, se creará al menos 1 registro para cada producto con la misma clave de URL.

Vince Roy
fuente
Esto nos ha causado grandes problemas. Tenemos 1 producto con 20 variaciones de color y 8 tamaños de cada uno, por lo tanto, tenemos MUCHOS productos simples que se importan con el mismo nombre. Dado que la clave de url es el nombre si no se especifica uno, terminamos con muchos duplicados. Lo molesto es que ni siquiera tenemos accesos simples individualmente (lo que hace una burla de ellos obteniendo índice en primer lugar). En cierta medida, lo solucionamos importando el sku simple como parte de su nombre, ya que no es visible en la parte delantera, nos salimos con la suya.
Peter O'Callaghan
También estoy enfrentando este problema, y ​​mi tabla de reescritura de URL tiene más de 80,000 entradas para solo 4000 productos. Si alguien tiene más información sobre esto, hágamelo saber.
Andy
Hay un parche empresarial que resuelve este problema para CE.
brentwpeterson
@brentwpeterson ¿Conoces la ID de ese parche?
Paul
1
SUPEE_389_EE - magento.stackexchange.com/questions/32159/…
brentwpeterson el
7

También hemos sido golpeados con este error. Reindicamos todos los días y obtuvimos 24,000 URL en solo unos días para alrededor de 1000 productos.

Creo que puede haber encontrado una solución para ello. He puesto esta solución en vivo en nuestro sitio de producción y veré cómo funciona. Si otros pueden probarlo, sería útil.

  1. En caso de que las cosas salgan mal, haga una copia de seguridad de la tabla y los datos de core_url_rewrite

  2. En app / code / core / Mage / Catalog / Model / Url.php line 809 change

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

    a

    if (!empty($requestPath)
            && strpos($existingRequestPath, $requestPath) === 0
        ) 
  3. Truncar (vaciar) la tabla core_url_rewrite

  4. En Sistema -> Gestión de índices, vuelva a indexar la URL del catálogo Reescribe datos

Ahora debería poder volver a indexar sin crear miles de reescrituras de URL aleatorias.

Gracias a Jahnni y snowcountry por la solución: lea más sobre esto aquí: http://www.magentocommerce.com/boards/viewthread/416476/

Informe de error aquí: http://www.magentocommerce.com/bug-tracking/issue?issue=15048

BlueC
fuente
Esto funcionó para mí. Upvoted
sulabh
No creo que esto funcione correctamente en 1.9.x. Vea aquí una solución de trabajo: gist.github.com/edannenberg/5310008
BlueC
0

Nuevo:

Esto es Loco. ¿Parece un problema de almacenamiento en caché? Algo en el proceso de indexación está roto, pero ni idea, lo siento.

Antiguo:

No tengo idea de por qué sucede esto, pero escribo mi experiencia y mis ideas:

  1. Cuando Magento encuentra una reescritura ya existente, agrega un número de conteo.

  2. Cuando cambia la reescritura, magento crea una reescritura para la URL anterior (si la casilla de verificación debajo del campo de entrada de texto está marcada).

  3. Creo que las reescrituras de URL personalizadas tal vez se guardan en otro lugar, por lo que las reescrituras personalizadas se aplican primero y luego se intenta agregar las reescrituras del producto y, si no es posible, se agrega el contador.

Fabian Blechschmidt
fuente
por favor vea mi pregunta, la he actualizado nuevamente, su publicación no es útil para mí en este momento
actualizó la respuesta, pero no fue útil :(
Fabian Blechschmidt