Altri hanno risposto a come funzionano i reindirizzamenti, ma dovresti anche sapere come generano i loro minuscoli URL. Sentirai erroneamente che creano un hash dell'URL per generare quel codice univoco per l'URL abbreviato. Questo non è corretto nella maggior parte dei casi, non stanno usando un algoritmo di hashing (dove potresti potenzialmente avere collisioni).
La maggior parte dei più diffusi servizi di accorciamento URL prende semplicemente l'ID nel database dell'URL e poi lo converte in Base 36 [a-z0-9] (senza distinzione tra maiuscole e minuscole) o in Base 62 (con distinzione tra maiuscole e minuscole).
Un esempio semplificato di una tabella di database TinyURL:
ID URL VisitCount
1 www.google.com 26
2 www.stackoverflow.com 2048
3 www.reddit.com 64
...
20103 www.digg.com 201
20104 www.4chan.com 20
I Web Frameworks che consentono un instradamento flessibile rendono la gestione dell'URL in entrata davvero semplice (Ruby, ASP.NET MVC, ecc.).
Quindi, sul tuo server web potresti avere un'azione di instradamento simile a (pseudo codice):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Che indirizza qualsiasi richiesta in arrivo al tuo server con testo dopo il tuo dominio www.mytinyurl.com al tuo metodo associato, RouteURL. Fornisce il testo che viene passato dopo la barra nell'URL a quel metodo.
Quindi, diciamo che hai richiesto: www.mytinyurl.com/fif
"fif" verrebbe quindi passato al metodo, RouteURL (String UrlID). RouteURL convertirà quindi "fif" nel suo equivalente in base10, 20103, e verrà effettuata una richiesta di database per reindirizzare a qualsiasi URL archiviato con l'ID 20103 (in questo caso, www.digg.com). Puoi anche aumentare il numero di visite per Digg di uno prima di reindirizzare all'URL corretto.
Questo è un esempio molto semplificato ma dovresti essere in grado di farti un'idea generale.