Cos’è uno slug?

Uno slug è una parte dell’URL quando si accede a una risorsa. Diciamo che hai un URL, come quello qui sotto, che mostra tutte le auto nel tuo sistema:

http://localhost/cars

Quando vuoi fare riferimento a una particolare auto nel tuo sistema, dovresti fornire il seguente URL:

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

Nota come l’URL è ancora molto logico, e molto SEO friendly. In termini di utilizzo dello slug, questo è a vostra discrezione. La stringa audi-a6 di cui sopra può essere un identificatore unico per un’auto nel vostro sistema – diciamo che avete un database relazionale con i seguenti campi:

idcar_namecar_brandcar_unique_identifier

Il campo car_unique_identifier verrebbe quindi utilizzato per memorizzare i valori che vengono visualizzati nello slug; nell’esempio che ho specificato sopra con un’auto Audi A6, questo è dove la vostra stringa audi-a6 dovrebbe stare.

Lo si può usare anche in altri modi – per esempio, se si ha un controller dei post che funziona come un blog. Il titolo di una pagina potrebbe essere lo slug per essa, se è codificato come URL. Per il nostro articolo chiamato “Best ways to make SEO better”, potreste fornire il seguente URL:

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

Eseguirete quindi url_decode() sullo slug, e otterrete la stringa best ways to make seo better, che potete usare per trovare un post tramite il suo titolo.

Non è necessario fermarsi qui – potete decidere di avere più slug per rappresentare qualcosa – diamo un’occhiata a come lo fa BBC. Ho preso un articolo a caso di oggi, che ha il seguente URL:

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

Questo si collega a un articolo chiamato: L’Unione Africana sollecita la CPI a lasciar cadere i casi contro i leader. Il modo in cui la BBC sta facendo è che usano l’ultima parte dello slug world-africa-24506006, che è 24506006, per identificare una voce unica nel loro sistema. Poi molto probabilmente usano world-africa per denotare la categoria a cui appartiene un post (anche se questa può essere solo una supposizione, è comunque un’ipotesi educata).

Infine, immaginiamo la seguente tabella DB, per documenti di ricerca.

idcategorytitle

Potresti avere un esempio che funziona come quello qui sotto.

http://localhost/papers

Questo URL rappresenta tutti gli articoli di ricerca attualmente nel sistema. Si potrebbe quindi essere in grado di accedere a tutti gli articoli di ricerca sulla fisica attraverso il seguente slug:

http://localhost/papers/physics

Il nostro slug è la fisica, e il nostro database select attualmente assomiglia a qualcosa come:

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

Si potrebbe quindi esporre il seguente URL:

http://localhost/papers/physics/gravitation

Ora il nostro slug è composto da fisica e gravitazione. La nostra query dietro le quinte può assomigliare a qualcosa come:

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

Questo ci permette di identificare univocamente una voce nel nostro sistema.

Allora abbiamo usato ripetutamente gli slug per filtrare le nostre informazioni. Nell’esempio, quando abbiamo eseguito l’URL senza slug:

http://localhost/papers

Vogliamo elencare tutte le ricerche disponibili. Quando abbiamo eseguito l’URL con lo slug physics:

http://localhost/papers/physics

Abbiamo voluto elencare tutte le ricerche sulla fisica, restringendo così i nostri risultati. Infine, quando abbiamo fornito due slug, abbiamo potuto identificare univocamente una voce nel nostro sistema.

http://localhost/papers/physics/gravitation

Potevamo modellare questo in modo diverso? Certamente! A seconda dei requisiti del nostro sistema, possiamo normalizzare e denormalizzare le nostre tabelle relazionali. Avremmo potuto avere un sistema di permalink, in modo che la nostra tabella dei post assomigliasse a questa:

 id title permalink

Potremmo quindi avere la seguente voce:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

Così da esporre l’URL:

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

Nell’esempio precedente, lo slug physics-gravitation-breakthrough ci permette di identificare univocamente un post tramite:

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