Question

Je vois souvent des URL (réécrites) sans identifiant, comme sur certaines installations WordPress.Quelle est la meilleure façon d’y parvenir ?Exemple:Site.com/product/some-product-name/ peut-être pour conserver les noms de pages et les identifiants en cache, pour éviter la requête DB sur chaque demande de page?Comment éviter les conflits et quels sont les autres problèmes liés à l'utilisation d'URL sans identifiant ?

Était-ce utile?

La solution

L'utilisation d'un identifiant présente en réalité la même énigme : vous recherchez simplement une valeur différente dans votre base de données.La partie « un nom de produit » de votre URL ci-dessus est également quelque chose d'unique.Certaines personnes les appellent des limaces (Wordpress, également des permaliens).Ainsi, au lieu d'interroger la base de données pour une ligne comportant un ID particulier, vous interrogez la base de données pour une ligne comportant un slug particulier.Vous n'avez pas besoin de connaître l'ID pour récupérer l'enregistrement.

Autres conseils

Tant que les noms de produits sont uniques, cela ne devrait pas poser de problème.Il ne faudra pas plus de temps (du moins pas significatif) pour rechercher un produit par nom unique plutôt que par identifiant numérique tant que la colonne est indexée.

Wordpress a un champ dans la table wp_posts pour le slug.Lorsque vous créez le message, il crée un slug à partir du titre du message (si c'est ainsi que vous l'avez configuré), en remplaçant les espaces par des tirets (ou je pense que vous pouvez le définir sur des traits de soulignement).Il supprime également les apostrophes, les virgules ou autres.Je pense que cela limite également la longueur totale de la limace.

Donc, en bref, il ne décode pas dynamiquement l'URL dans le titre de la publication - il y a un champ dans le tableau qui correspond directement à la version URL du nom de la publication.

Comme vous le savez peut-être ou non, les URL sont réécrites avec Apache mod_rewrite module.Comme mentionné ici, Wordpress attribue, en arrière-plan, un slug après avoir nettoyé le titre ou le nom du message.

Mais, pour répondre à votre question, ce que vous décrivez est la fonctionnalité "Pretty Permalinks" de Wordpress et vous pouvez en apprendre davantage à ce sujet dans le Codex Wordpress.Les versions plus récentes de Wordpress effectuent la réécriture en interne (pas d'édition .htaccess, wp_rewrite plutôt).C'est pourquoi vous verrez le même ensemble de règles pour toute structure de permalien.

Cependant, si vous creusez un peu, vous pouvez trouver les anciennes règles de réécriture.Par exemple:

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

Prendra une URL comme /2008/01/01/ et dirigez-le vers /index.php?year=2008&monthnum=01&day=01 (et chargez une catégorie de date).

Mais, comme mentionné, une page comme product-name existe seulement car Wordpress a déjà nettoyé le titre du message et l'a stocké sous forme de champ dans la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top