instalar - URL sin ID
url rewrite iis examples (4)
Veo URL (reescritas) a menudo 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 una 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 al usar URL sin ID?
El uso de una identificación 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.
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.
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.
Entonces, 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.
Como puede o no, las URL se vuelven a escribir con el módulo 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 códice de Wordpress . 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 haces algunas excavaciones, puedes encontrar las viejas 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/
/index.php?year=2008&monthnum=01&day=01
/2008/01/01/
y la dirigirá a /index.php?year=2008&monthnum=01&day=01
(y cargará una categoría de fecha).
Pero, como se mencionó, una página como product-name
existe solo porque Wordpress ya desinfectó el título de la publicación y lo almacenó como un campo en la base de datos.