Een slug is een deel van de URL wanneer u een bron benadert. Stel dat u een URL hebt, zoals hieronder, die alle auto’s in uw systeem weergeeft:
http://localhost/cars
Wanneer u naar een bepaalde auto in uw systeem wilt verwijzen, geeft u de volgende URL op:
http://localhost/cars/audi-a6/
Merk op dat de URL nog steeds heel logisch is, en zeer SEO-vriendelijk. In termen van het gebruik van de slug, dat is naar eigen goeddunken. De audi-a6 string hierboven kan een unieke identificatie zijn voor een auto in uw systeem – laten we zeggen dat u een relationele database hebt met de volgende velden:
idcar_namecar_brandcar_unique_identifier
Het veld car_unique_identifier
zou dan worden gebruikt om de waarden op te slaan die worden weergegeven in de slug; in het voorbeeld dat ik hierboven heb gespecificeerd met een Audi A6 auto, is dit waar uw audi-a6 string zou komen te staan.
Je kunt het ook op andere manieren gebruiken – bijvoorbeeld, als je een posts controller hebt die functioneert als een blog. De titel van een pagina kan de slug zijn, als deze URL gecodeerd is. Voor ons artikel met de naam “Beste manieren om SEO te verbeteren”, kunt u de volgende URL opgeven:
http://localhosts/posts/best-ways-to-make-seo-better
U zou dan url_decode()
uitvoeren op de slug, en u zou de string verkrijgen beste manieren om seo beter te maken, die u kunt gebruiken om een post te vinden via zijn titel.
Het hoeft daar niet op te houden – u kunt besluiten om meerdere slugs te hebben om iets weer te geven – laten we eens kijken hoe BBC het doet. Ik heb een willekeurig artikel van vandaag genomen, dat de volgende URL heeft:
http://www.bbc.co.uk/news/world-africa-24506006
Dit linkt naar een artikel met de naam: Afrikaanse Unie dringt er bij ICC op aan zaken tegen leiders te laten vallen. De manier waarop de BBC dit doet is dat zij het laatste deel van de slug world-africa-24506006, dat is 24506006, gebruiken om een unieke vermelding in hun systeem te identificeren. Ze gebruiken dan waarschijnlijk world-africa om de categorie aan te duiden waartoe een post behoort (hoewel dit slechts een veronderstelling kan zijn, is het nog steeds een beredeneerde gok).
Stellen we ons de volgende DB tabel voor, voor onderzoekspapers.
idcategorytitle
Je hebt misschien een voorbeeld dat werkt als het onderstaande.
http://localhost/papers
Deze URL vertegenwoordigt alle onderzoekspapers die momenteel in het systeem zitten. Je zou dan in staat zijn om toegang te krijgen tot alle research papers over natuurkunde via de volgende slug:
http://localhost/papers/physics
Onze slug is natuurkunde, en onze database select ziet er op dit moment ongeveer zo uit:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'
Je kunt dan de volgende URL gebruiken:
http://localhost/papers/physics/gravitation
Nu is onze slug samengesteld uit natuurkunde en gravitatie. Onze query achter de schermen kan er ongeveer zo uitzien:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'
Dit stelt ons in staat om een item in ons systeem uniek te identificeren.
Dus we hebben herhaaldelijk slugs gebruikt om onze informatie te filteren. In het voorbeeld, toen we de URL zonder slugs uitvoerden:
http://localhost/papers
We wilden een lijst van alle beschikbare onderzoekspapers. Toen we de URL met de slug natuurkunde uitvoerden:
http://localhost/papers/physics
Wij wilden een lijst van alle onderzoekspapers over natuurkunde, dus het beperken van onze resultaten. Tenslotte, wanneer we twee slugs verstrekten, konden we een unieke vermelding in ons systeem identificeren.
http://localhost/papers/physics/gravitation
Konden we dit anders gemodelleerd hebben? Natuurlijk! Afhankelijk van de vereisten van ons systeem, kunnen wij onze relationele tabellen normaliseren en denormaliseren. We hadden een permalink systeem kunnen gebruiken, zodat onze postentabel er als volgt uitzag:
id title permalink
We hadden dan de volgende entry kunnen hebben:
| 20013 | Gravitation | physics-gravitation-breakthrough |
Waardoor de URL zichtbaar werd:
http://localhost/papers/physics-gravitation-breakthrough
In het bovenstaande voorbeeld stelt de slug physics-gravitation-breakthrough ons in staat een post uniek te identificeren via:
SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough