URL leggibili dall'uomo:preferibilmente anche gerarchico?
-
26-09-2019 - |
Domanda
In un domanda ora migrata riguardo agli URL leggibili dall'uomo mi sono permesso di elaborare un mio piccolo cavallo di battaglia:
Quando incontro URL come
http://www.example.com/product/123/subpage/456.html
Penso sempre che questo sia un tentativo di creare URL gerarchici significativi che, tuttavia, non sono del tutto gerarchici.Quello che voglio dire è che dovresti essere in grado di tagliare un livello alla volta.In quanto sopra, l'URL presenta due violazioni di questo principio:
/product/123
È uno informazione rappresentata su due livelli.Sarebbe più correttamente rappresentato come/product:123
(o qualunque delimitatore tu voglia)/subpage
molto probabilmente non è un'entità in sé (vale a dire, non puoi salire uno livello da456.html
COMEhttp://www.example.com/product/123/subpage
è niente").Pertanto ritengo più corretto quanto segue:
http://www.example.com/product:123/456.html
Qui puoi sempre salire di un livello alla volta:
http://www.example.com/product:123/456.html
— La sottopaginahttp://www.example.com/product:123
— La pagina del prodottohttp://www.example.com/
- La radiceSeguendo la stessa filosofia, avrebbe senso quanto segue [e fornire un collegamento aggiuntivo all'elenco dei prodotti]:
http://www.example.com/products/123/456.html
Dove:
http://www.example.com/products/123/456.html
— La sottopaginahttp://www.example.com/products/123
— La pagina del prodottohttp://www.example.com/products
— L'elenco dei prodottihttp://www.example.com/
- La radice
La mia motivazione principale per questo approccio è che se ogni "elemento del percorso" (delimitato da /
) è autonomo1, sarai sempre in grado di navigare verso il "genitore" semplicemente rimuovendo l'ultimo elemento dell'URL.Questo è ciò che (a volte) faccio nel mio esplora file quando voglio andare nella directory principale.Seguendo la stessa logica l'utente (o un motore di ricerca/crawler) può fare lo stesso.Abbastanza intelligente, penso.
D'altra parte (e questa è la parte importante della domanda):Anche se non posso mai impedire che un utente tenti di accedere a un URL che lui stesso ha amputato, sto erroneamente affermando (e onorando) che un motore di ricerca potrebbe fare lo stesso? Cioè, è ragionevole aspettarsi che nessun motore di ricerca (o realmente:Google) proverebbe ad accedere http://www.example.com/product/123/subpage
(punto 2, sopra)?(O sto davvero prendendo in considerazione solo il fattore umano?)
Questa non è una questione di preferenze personali.È una domanda tecnica su cosa posso aspettarmi da un crawler/indicizzatore e in che misura dovrei prendere in considerazione la manipolazione degli URL non umani durante la progettazione degli URL.
Inoltre, la "profondità" strutturale di http://www.example.com/product/123/subpage/456.html
è 4, dove http://www.example.com/products/123/456.html
sono solo 3.Si dice che questa profondità influenzi il posizionamento nei motori di ricerca.Almeno, così mi è stato detto.(È ormai evidente che la SEO lo è non quello di cui so di più.) È (ancora?) vero: la profondità gerarchica (numero di directory) influenza il posizionamento nella ricerca?
Quindi, la mia "intuizione" è tecnicamente valida o dovrei dedicare il mio tempo a qualcos'altro?
Esempio:Farlo (quasi) bene
Il buon vecchio SO lo capisce quasi bene.Caso in questione:profili, ad es. http://stackoverflow.com/users/52162
:
http://stackoverflow.com/users/52162
— Profilo unicohttp://stackoverflow.com/users
— Elenco degli utentihttp://stackoverflow.com/
- Radice
comunque, il URL canonico per il profilo è in realtà http://stackoverflow.com/users/52162/jensgram
che sembra ridondante (lo stesso punto finale rappresentato su due livelli gerarchici).Alternativa: http://stackoverflow.com/users/52162-jensgram
(o qualsiasi altro delimitatore utilizzato in modo coerente).
1) Trasporta un'informazione completa e non dipendente da elementi "più profondi".
Soluzione
URL gerarchici di questo tipo "http://www.example.com/product:123/456.html" sono inutili quanto "http://www.example.com/product/123/subpage", perché quando gli utenti vedono i tuoi URL, a loro non interessano gli identificatori dal tuo database, vogliono percorsi significativi.Questo è il motivo per cui StackOverflow inserisce i titoli delle domande negli URL:"http://stackoverflow.com/questions/4017365/human-readable-urls-preferably-hierarchical-too".
Google sconsiglia la pratica di sostituire query abituali come "http://www.example.com/?product=123&page=456", perché quando ogni sito sviluppa il proprio schema, il crawler non sa cosa significa ciascuna parte, se è importante o no.Google ha inventato meccanismi sofisticati per trovare argomenti importanti e ignorare argomenti non importanti, il che significa che otterrai più pagine nell'indice e ci saranno meno duplicati.Ma questi algoritmi spesso falliscono quando gli sviluppatori web inventano il proprio schema.
Se ti interessano sia gli utenti che i crawler dovresti utilizzare invece URL come questi:
- http://www.example.com/products/greatest-keyboard/benefits - la sottopagina
- http://www.example.com/products/greatest-keyboard - la pagina del prodotto
- http://www.example.com/products — l'elenco dei prodotti
- http://www.esempio.com/ - la radice
Inoltre, i motori di ricerca assegnano un punteggio più alto alle pagine con parole chiave nell'URL.