Una vez terminada una de nuestras tiendas, hemos detectado un problema que complica la indexación de la tienda. Me refiero a la forma que tiene Magento de montar las urls para cada producto. Se trata de contenido duplicado.
Voy a poner un par de ejemplos para intentar explicar el problema.
http://midominio/producto-1
http://midominio/mi-categoria/sug-categoria/producto-1
¿Cuál de las dos es la buena? En realidad, Magento conoce este problema y como no es capaz de determinar la principal (canonical url) deja las dos por buenas.
Buscando por google he encontrado un artículo bastante interesante que cuenta como solucionar (en parte) este problema.
Lo primero que tenemos que hacer es activar la opción de Usar rutas de categorías para la URL de los productos. Esto lo podemos encontrar en el Admin -> Sistema -> Configuración -> Catálogo ->Optimizaciones para el motor de búsqueda.
La acticavión de esta opción determina como el URL Rewrites se autogenera. Si elegimos “si” la URL de los productos incluirá la categoría asociada. Si elegimos “No” la URL del producto únicamente incluirá el nombre del producto, independientemente del número de categorías al que esté asociado.
Una vez activada esta opción podemos usar cualquiera de estas URL’s:
- /catalog/producto/view/id/<product_id>
ejemplo: http://www.midominio.com/catalog/producto/view/id/6
Interna de Magento; nunca se ve. - /catalog/producto/view/id/<product_id>/category/<category_id>
ejemplo: http://www.midominio.com/catalog/producto/view/id/6/category/10
Interna de Magento; nunca se ve. - /nombre-del-producto
ejemplo: http://www.midominio.com/super-dee-duper-tent-1000-olive
Normalmente usada en el front de la página, en los bloque, etc.
Esto ocurre porque Magento no sabe en que URL debe mostrar el producto (ya que permite ubicar un mismo producto en varias categorías). Por lo tanto elige la opción de no mostrar en la URL ninguna. - /category-1/sub-category-1/nombre-del-producto
ejemplo: http://www.midominio.com/sporting-goods/camping-hiking/super-dee-duper-tent-1000-olive
Usado desde las páginas de categorías. - /category-2/nombre-del-producto
ejemplo: http://www.midominio.com/affordable-housing/super-dee-duper-tent-1000-olive
Usado desde las páginas de categorías. - etc.
Dependiendo del número de categorías.
Bueno, por lo que comenta el autor del artículo, la forma de solucionarlo (ojo, está tocando el Core de Magento) es aplicando el siguiente parche:
Index: app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php
===================================================================
--- app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php (revision 2102)
+++ app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php (working copy)
@@ -553,7 +553,11 @@
->from($this->getTable('core/url_rewrite'), array('product_id', 'request_path'))
->where('store_id=?', Mage::app()->getStore()->getId())
->where('is_system=?', 1)
- ->where('category_id=? OR category_id is NULL', $this->_urlRewriteCategory)
+// excluding this clause to facilitate one URL per product, and one that includes the category
+// if a product has multiple categories, the first one (by category_id) will be used
+// in most cases you'll probably only have one category because you only want one page per product for SEO reasons
+// for maximum link juice, no possibility of duplicate content, and a less confusing store
+// ->where('category_id=? OR category_id is NULL', $this->_urlRewriteCategory)
->where('product_id IN(?)', $productIds)
->order('category_id DESC'); // more priority is data with category id
$urlRewrites = array();
Resumiendo, edita el fichero y comenta esta línea (más o menos en la línea 829)
->where(‘category_id=? OR category_id is NULL’, $this->_urlRewriteCategory)
Con esto hacemos la consulta más flexible. Si un producto está en varias categorías tendrá varias URL, nosotros cogeremos la primera.
En teoría esto debería funcionar tanto para productos que están en una única categoría como para los que están asignados a varias.
NOTA: ya va siendo hora de que salga la v1.4, se supone que van a corregir los múltiples fallos en los temas principales en lo que concierne a SEO.