Qu’est-ce qu’un slug ?

Un slug est une partie de l’URL lorsque vous accédez à une ressource. Disons que vous avez une URL, comme celle ci-dessous, qui affiche toutes les voitures de votre système :

http://localhost/cars

Lorsque vous voudriez faire référence à une voiture particulière dans votre système, vous fourniriez l’URL suivante :

http://localhost/cars/audi-a6/

Notez comment l’URL est encore très logique, et très favorable au référencement. En ce qui concerne l’utilisation du slug, c’est à votre propre discrétion. La chaîne audi-a6 ci-dessus peut être un identifiant unique pour une voiture dans votre système – disons que vous avez une base de données relationnelle avec les champs suivants:

idcar_namecar_brandcar_unique_identifier

Le champ car_unique_identifier serait alors utilisé pour stocker les valeurs qui sont affichées dans le slug ; dans l’exemple que j’ai spécifié ci-dessus avec une voiture Audi A6, c’est là que votre chaîne audi-a6 se trouverait.

Vous pouvez également l’utiliser d’autres façons – par exemple, si vous avez un contrôleur de posts qui fonctionne comme un blog. Le titre d’une page pourrait être le slug de celle-ci, s’il est codé en URL. Pour notre article intitulé « Best ways to make SEO better », vous pourriez fournir l’URL suivante:

http://localhosts/posts/best-ways-to-make-seo-better

Vous exécuteriez alors url_decode() sur le slug, et vous obtiendriez la chaîne best ways to make seo better, que vous pouvez utiliser pour trouver un article via son titre.

Cela ne doit pas s’arrêter là – vous pouvez décider d’avoir plusieurs slugs pour représenter quelque chose – regardons comment la BBC le fait. J’ai pris un article aléatoire d’aujourd’hui, qui a l’URL suivante:

http://www.bbc.co.uk/news/world-africa-24506006

Ceci renvoie à un article nommé : L’Union africaine exhorte la CPI à abandonner les poursuites contre les dirigeants. La façon dont la BBC procède est qu’elle utilise la dernière partie du slug world-africa-24506006, qui est 24506006, pour identifier une entrée unique dans son système. Ils utilisent ensuite très probablement world-africa pour désigner la catégorie à laquelle appartient un post (bien que cela puisse n’être qu’une hypothèse, c’est toujours une supposition éclairée).

Enfin, imaginons la table DB suivante, pour les articles de recherche.

idcategorytitle

Vous pouvez avoir un exemple qui fonctionne comme celui ci-dessous.

http://localhost/papers

Cette URL représente tous les papiers de recherche actuellement dans le système. Vous pourriez alors accéder à tous les documents de recherche sur la physique via le slug suivant:

http://localhost/papers/physics

Notre slug est la physique, et notre sélection de base de données ressemble actuellement à quelque chose comme:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'

Vous pouvez alors exposer l’URL suivante:

http://localhost/papers/physics/gravitation

Maintenant notre slug est composé de la physique et de la gravitation. Notre requête en coulisses peut ressembler à quelque chose comme:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'

Cela nous permet d’identifier de manière unique une entrée dans notre système.

Nous avons donc utilisé les slugs à plusieurs reprises afin de filtrer nos informations. Dans l’exemple, lorsque nous avons exécuté l’URL sans aucun slug :

http://localhost/papers

Nous voulions lister tous les documents de recherche disponibles. Lorsque nous avons exécuté l’URL avec le slug physique:

http://localhost/papers/physics

Nous voulions répertorier tous les documents de recherche sur la physique, réduisant ainsi nos résultats. Enfin, lorsque nous avons fourni deux slugs, nous avons pu identifier de manière unique une entrée dans notre système.

http://localhost/papers/physics/gravitation

Pourrions-nous avoir modélisé cela différemment ? Bien sûr ! En fonction des exigences de notre système, nous pouvons normaliser et dénormaliser nos tables relationnelles. Nous aurions pu avoir un système de permalien en place, de sorte que notre table posts ressemblait à ceci:

 id title permalink

Nous aurions alors pu avoir l’entrée suivante:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

Donc exposer l’URL:

 http://localhost/papers/physics-gravitation-breakthrough

Dans l’exemple ci-dessus, le slug physics-gravitation-breakthrough nous permet d’identifier de manière unique un post via:

 SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough

.