He notado una gran cantidad de informes de que esta tabla en sí misma puede llegar a estar extremadamente desordenada, estoy ejecutando un sitio con ~ 5000 SKU y ~ 250 categorías (tienda única) y una core_url_rewrite
tabla resultante de más de 600,000 líneas y más de 500 MB de tamaño que es una locura
Esto puede ralentizar el rendimiento del sitio y generar una base de datos muy voluminosa. Investigué un poco y encontré algunas publicaciones al respecto, sobre todo:
Error de Core_url_rewrite: cantidad masiva de URL duplicadas para cada producto generado en el índiceMagento Commerce - Seguimiento de errores - Problema # 29020
// Estos enlaces se han eliminado desde la implementación de los nuevos tableros
Ahora entiendo que la tabla se puede truncar y volver a indexar, pero esto no resuelve el problema, solo prolonga el problema de que vuelva a suceder.
Por lo que entiendo, parte del problema son los productos que tienen la misma clave de URL basada en el nombre del producto, lo que resulta en enlaces indexados.
Una solución mencionada es:
app/code/core/Mage/Catalog/Model/Url.php
en línea ~ 807:
Cambio:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
A:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Pero incluso esto no resuelve completamente el problema.
Mi pregunta es la siguiente:
Si ha experimentado este problema, ¿ha logrado establecer un algoritmo eficaz, lógico y eficiente que no implique "gestionar" el problema repetidamente, sino que en realidad lo resuelva de una vez por todas?
Sería realmente apreciar una idea de esto.
Por cierto: hazte un favor y comprueba cómo se ve tu mesa en este momento, es posible que estés experimentando este problema y el impacto en el rendimiento como resultado sin siquiera saberlo, no lo hice.
Editar: He estado en contacto con www.Nexcess.net (un socio de hosting platino de Magento) y han confirmado que han tenido clientes que solicitan que su core_url_rewrite
mesa requiera truncamiento como resultado de ser demasiado voluminosa.
Una gran preocupación mía es el impacto de SEO que esto puede tener, por lo que me gustaría una solución en lugar de postergar el problema.
Actualización: Nexcess mencionó que con los productos duplicados dentro de la tabla en realidad puede estar dañando el SEO tal como está.
fuente
Respuestas:
He logrado estabilizar el problema de la siguiente manera:
Paso 1: reescriba el modelo de URL del catálogo (usando su propio módulo: cómo hacerlo )
Según la solución de Jahnni en
los tableros de MagentoCommerce(ya no está activo con el nuevo tablero),app/code/core/Mage/Catalog/Model/Url.php
[alrededor de la línea 807Mage_Catalog_Model_Url::getProductRequestPath()
]De:
A:
Paso 2: truncar
Truncar la
core_url_rewrite
mesaPaso 3: reindexar y vaciar cachés
Inicie el proceso de re-indexación en Core URL Rewrites. A partir de entonces, querrá vaciar el caché de Magento y el caché de almacenamiento.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Voila, estás listo. Notará que si vuelve a ejecutar el indexador, la tabla debe permanecer constante en tamaño (a menos que haya agregado más productos intermedios o si tiene nombres de categoría duplicados).
fuente
core_url_rewrite
tabla ahora y anote la cantidad de registros. Vuelva a ejecutar el paso 3 (la reindexación) y actualice su vista en lacore_url_rewrite
tabla. Si el número es el mismo, ha resuelto con éxito. Luego continúe y combine manualmente sus reescrituras personalizadas. Todo lo mejor.Si bien espero que alguien presente una respuesta, no sé si la encontrarás. Esta tabla se vuelve voluminosa por muchas razones diferentes. Los errores en versiones anteriores (y posiblemente actuales) de Magento son uno. Otra es que hay lógica en esta tabla que intenta rastrear los cambios en el valor de la clave URL para que las reescrituras 301/302 se configuren para productos antiguos. Debido a esto, y complicando las cosas, truncar la tabla y volver a generarla puede hacer que las reescrituras de URL existentes desaparezcan, y esto tendrá un efecto desconocido en su listado de motores de búsqueda (no necesariamente malo, solo difícil de predecir).
Mi consejo general para los clientes que preguntan es
Deje la tabla de crecimiento gigante como está si no tiene un buen manejo de su situación de URL / SEO
Hasta que el tamaño de la tabla comience a ser un problema (por ejemplo, generar mapas del sitio). Cuando eso suceda, controle su situación de URL / SEO.
Una vez que tenga una idea de su situación de URL / SEO, haga una copia de seguridad de la tabla, luego trunque la tabla y vuelva a generarla. Aborde cualquier problema de URL / SEO causado por el truncamiento.
Automatizar el paso 3
Intentar arreglar esto en el nivel de código de Magento es admirable, pero estarás nadando río arriba. A veces es mejor aceptar que "Eso es solo Magento siendo Magento", y resolver el problema con un proceso externo.
fuente
Me gustaría agregar una solución para este error del indexador de reescritura de URL que se desarrolló en el bugathon en marzo de 2013 y que se ha mejorado aún más después. Debería resolver este problema. Como referencia, aquí está el archivo de parche del enlace:
Además, me gustaría agregar el parche EE
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, que ahora está disponible en GitHub :Si desea utilizar este parche con CE, asegúrese de probarlo correctamente, ya que se ha desarrollado para EE.
fuente
Después de aplicar el parche publicado por Simon, puede usar la siguiente consulta para eliminar datos basura:
A diferencia de la consulta de Ashish Hira, esto solo afecta a las URL que tienen un número entero como la última parte, esta fue, en mi caso, la razón del desorden.
Intenta no tocar reescrituras válidas, que por ejemplo podrían haberse creado al actualizar una clave URL.
fuente
He implementado la respuesta aceptada con éxito. En otra instalación de Magento, necesitaba preservar algunas reescrituras personalizadas, así que eliminé todas las entradas que terminaban en - y luego un número de hasta 5 dígitos con:
Esto funcionó principalmente, pero todavía obtengo 2 filas más en cada reindexación. No estoy seguro de por qué. Pensé en compartir esta experiencia.
fuente
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
El cambio central que mencionó solo parece ser necesario si tiene productos sin url_keys, sin embargo, Magento siempre debe crear url_keys para usted. Si tiene algún importador que está creando productos sin url_keys, entonces este problema surgirá para esos productos. Intente ejecutar la siguiente consulta para encontrar dichos productos:
Si algún producto regresa de esa consulta, no tiene una url_key y será un problema.
fuente
entity_type_id
para los productos es 4 y no 10.Seguí la solución aprobada para evitar reescrituras de URL duplicadas, luego exporté
core_url_rewrite
como archivo CSV. Pude abrir este CSV y eliminar todas las regrabaciones de URL creadas manualmente.Luego trunqué la
core_url_rewrite
tabla e importé mi CSV guardado con reescrituras de URL creadas manualmente.Después de todos los cambios, pasó de 940K filas a 32K. Enorme mejora.
fuente
Aquí hay un parche (reescritura local) para Magento Community para corregir que https://github.com/biotech/Magento-URL-Rewrite De hecho, hace lo mismo que el parche EE PATCH_SUPEE-389_EE_1.12.0.2_v2.sh - verifique cada reescritura y Evitar la creación de registros duplicados. Funciona bien los últimos 2 meses en producción CE 1.9, 15k productos, 4 tiendas, reindexación completa todas las noches después de los cambios de importación de productos a granel.
fuente
Como esto aún no se menciona en este hilo, quería compartir la buena noticia de que este problema se soluciona en Magento 1.9.3.9 y versiones posteriores. Consulte las notas de la versión relacionadas :
Por lo tanto, todas las soluciones para este problema mencionado aquí no son necesarias cuando se utiliza una versión de Magento mayor o igual que 1.9.3.9. Todavía sugiero eliminar los valores antiguos como se describe en la respuesta de Alex .
fuente
Ejecute esta consulta
Esto seguramente lo ayudará a reducir el tamaño de la
core_url_size
tabla eliminando datos basura.fuente
Deshacerse de
.html
.html
Establecer en .htaccess
Borrar todos los
.html
redireccionamientos:fuente
La respuesta oficial debería ser instalar SUPEE-389. Simple como eso.
Funciona perfectamente con Magento CE ya que comparten el mismo código en esta área.
Puede encontrar el archivo de parche aquí, https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
Tuvimos este problema y generó miles de filas nuevas después de cada reindexación de URL de catálogo. Ahora el problema se ha ido ... excepto por el hecho de que tenemos que limpiar la base de datos.
El script proporcionado aquí parece un buen comienzo, pero no es una solución perfecta,
Ver https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
fuente
También hay un módulo dedicado https://github.com/vladsmirnov/url-rewrites , por lo que no tiene que volver a aplicar el parche después de cada actualización de Magento. El módulo contiene dos partes: el módulo real, para evitar la duplicación de ahora en adelante y el script de shell para limpiar la base de datos existente.
fuente