2010-12-06 25 views
6

Estoy desarrollando un sitio de comercio electrónico usando CodeIgniter. ¿Cuáles son las estrategias generales utilizadas para crear URL amigables con SEO?CodeIgniter: SEO friendly URLs

Supongo que tengo un producto con un id de 123 y un nombre de producto de 32 in Sony TV. ¿Acabo de hacer lo siguiente:

http://www.domain.com/product/123/32-in-sony-tv/ 

Significado, tengo 2 segmentos de URI. El primero se usa para identificar el producto real. El segundo es simplemente ignorado por la aplicación (aunque los enlaces internos, sitemap.xml, etc. se refieren al producto en su forma amigable de SEO).

Sugerencias?

+1

Lo que hace este CodeIgniter específica? – robert

+1

Use la función "Enrutamiento URI" incorporada en CodeIgniter; consulte mi respuesta a continuación. – NexusRex

Respuesta

11

He abordado este problema específico de una manera muy diferente con el enrutamiento URI de CodeIgniter y con gran éxito.

Cuando crea un nuevo producto, debe almacenar el nombre con guión (32-en-sony-tv) en un campo único, indexado, en la tabla de productos de su base de datos. La función que crea el nombre con guiones debe verificar si el nombre ya está usado y agregar "-1", "- 2", "-3" y así sucesivamente hasta que encuentre una cadena que no se está utilizando (por ejemplo: 32-in-sony -tv-4).

En su application/config/routes.php archivo de complemento:

$route['product/(:any)'] = "catalog/lookup_by_hyphenated_name/$1"; 

Esto haría solicitudes de re-ruta para http://www.domain.com/product/32-in-sony-tv a http://www.domain.com/catalog/lookup_by_hyphenated_name/32-in-sony-tv detrás de las escenas y permitir todo tipo de flexibilidad.

+1

¿Y qué ocurre si quiere cambiar el nombre del alias? ¿Mueren todos tus enlaces antiguos? – treeface

+1

Si solo mantiene un valor en su tabla de productos, entonces sí, el enlace anterior fallece. Si necesita mantener los enlaces antiguos en funcionamiento, puede almacenar los enlaces únicos en una tabla de búsqueda y agregar lógica a su proceso para crear únicamente nuevas cadenas de identificación y nunca eliminar las antiguas. La tabla de búsqueda podría ser realmente simple, solo una columna para fk de la tabla de productos y la cadena de id para el enlace, con una clave principal que incluye ambas columnas. – NexusRex

+0

Creará un problema si hay otras acciones del controlador en el controlador del producto –

0

Dado que amazon.com hace exactamente lo mismo que estás considerando, diría que estás en buena compañía.

0

Estoy desarrollando una aplicación web con CodeIgniter y aunque no es comercio electrónico, también quería mejores URL y, como tal, he tomado la misma ruta que tú, como dice Robert Amazon y otras grandes tiendas en línea, así que reconozco si es lo suficientemente bueno para ellos, es lo suficientemente bueno para mí :)

3

Todo depende de qué tan limpias quieras que se vean tus URL y cómo defines "limpio". Si se va a deshacerse del segmento URI product_id e hizo su URL aspecto:

http://www.domain.com/product/32-in-sony-tv/ 

La diferencia básica es que usted tendría que asegurarse de que todos sus productos tienen únicas alias que no son nunca cambiado Esto significa que si tiene otro televisor Sony de 32 pulgadas, tendrá que darle un alias ligeramente alterado. Esto te limita, por supuesto, a no poder cambiar tu alias en el futuro, si decides hacerlo.

Intente también tener en cuenta que es muy, muy, muy poco probable que esto afecte su clasificación en los motores de búsqueda. Lo que debería centrarse principalmente en cómo humanos perciben sus URL y cualquier escollo que pueda enfrentar dos o tres años después de la modificación del nombre del alias del producto.

Debido a la imprevisibilidad de lo que sus clientes (o usted) podrían querer hacer con esos alias, yo personalmente me apegaría al tipo de URL que dijo que estaba usando. Es mejor operar en un sistema basado en ID, creo.

+0

¡De hecho, es muy probable que afecte su clasificación en los motores de búsqueda! – NexusRex

+0

¿Por qué no podría modificar el alias del producto dos años más adelante si quisiera? 32-en-sony-tv, 32-en-sony-tv-1, 32-en-sony-tv-2, etc. ES un sistema basado en ID. Es solo un sistema basado en ID más legible que los numéricos. – NexusRex

+1

@NexusRex Usted * podría * hacerlo, por supuesto, pero mi punto era que un sistema completo probablemente requeriría una segunda tabla para realizar un seguimiento de los alias alternativos. Si el producto # 132 tiene un alias de '32-en-sony-tv', un enlace que sirve en Internet durante dos años, y luego lo cambia a' 32-en-sony-tv-1', usted ' va a necesitar una forma de almacenar no solo el valor de alias actual del producto # 132, sino también cualquier valor de alias anterior, de lo contrario, todos sus enlaces anteriores se romperán. Esto agregaría una sobrecarga adicional muy pequeña a su vista del producto ... pero ciertamente es una solución. – treeface

0

Hago esto con todas mis aplicaciones de CI, y me gustaría ir con lo que dijo NexusRex. Es la mejor ruta, y sí, tener palabras clave en su URL afecta su clasificación en el motor de búsqueda.