2008-08-16 14 views
5

Veo URL a menudo (reescritas) sin ID, como en algunas instalaciones de wordpress. ¿Cuál es la mejor manera de lograr esto? Ejemplo: site.com/product/some-product-name/ ¿Quizás para mantener la matriz de nombres de página e ID en caché, para evitar la consulta de DB en cada solicitud de página? Cómo evitar conflictos, y ¿cuáles son otros problemas sobre el uso de URL sin ID?URL sin ID

Respuesta

3

El uso de una ID presenta el mismo acertijo, en realidad, solo está buscando un valor diferente en su base de datos. La parte "nombre de algunos productos" de su URL anterior también es algo único. Algunas personas los llaman babosas (Wordpress, también enlaces permanentes). Entonces, en lugar de consultar la base de datos de una fila que tiene la ID particular, está consultando la base de datos para una fila que tiene una babosa particular. No necesita saber la ID para recuperar el registro.

1

Siempre que los nombres de los productos sean únicos, no debería ser un problema. No llevará más tiempo (al menos no significativo) buscar un producto por nombre único que ID numérico, siempre que la columna esté indexada.

+0

Bueno, tomará mucho más tiempo, pero aún es lo suficientemente rápido como para no importarle. –

1

Wordpress tiene un campo en la tabla wp_posts para el slug. Cuando creas la publicación, crea un slug a partir del título de la publicación (si así es como lo tienes configurado), reemplazando espacios con guiones (o creo que puedes configurarlo para subrayar). También elimina los apóstrofes, comas o cualquier otra cosa. Creo que también limita la longitud total de la babosa también.

Por lo tanto, en resumen, no está decodificando dinámicamente la URL en el título de la publicación; hay un campo en la tabla que coincide directamente con la versión URL del nombre de la publicación.

1

Como usted puede o no puede saber, las URL se vuelven a escribir con el módulo de mod_rewrite de Apache. Como se mencionó aquí, Wordpress está, en segundo plano, asignando un slug después de desinfectar el título o el nombre del mensaje.

Pero, para responder a su pregunta, lo que está describiendo es la función "Pretty Permalinks" de Wordpress y puede obtener más información al respecto en el número Wordpress codex. Las versiones más nuevas de Wordpress hacen la reescritura interna (no .htaccess editin, wp_rewrite en su lugar). Por eso verá el mismo conjunto de reglas para cualquier estructura de enlace permanente.

Sin embargo, si realiza alguna búsqueda, puede encontrar las antiguas reglas de reescritura. Por ejemplo:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L] 

tomará una URL como /2008/01/01/ y dirigirla a /index.php?year=2008&monthnum=01&day=01 (y cargar una categoría de fecha).

Pero, como se mencionó, existe una página como product-nameúnica porque Wordpress ya desinfectado el título de la entrada y se almacena como un campo en la base de datos.

Cuestiones relacionadas