D'autres ont répondu au fonctionnement des redirections, mais vous devez également savoir comment elles génèrent leurs minuscules URL. Vous entendrez à tort qu'ils créent un hachage de l'URL afin de générer ce code unique pour l'URL raccourcie. Ceci est incorrect dans la plupart des cas, ils n'utilisent pas d'algorithme de hachage (où vous pourriez potentiellement avoir des collisions).
La plupart des services de raccourcissement d'URL populaires prennent simplement l'ID dans la base de données de l'URL, puis le convertissent en Base 36 [a-z0-9] (insensible à la casse) ou en Base 62 (sensible à la casse).
Un exemple simplifié de table de base de données 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
Les frameworks Web qui permettent un routage flexible facilitent la gestion des URL entrantes (Ruby, ASP.NET MVC, etc.).
Ainsi, sur votre serveur Web, vous pouvez avoir une action d'itinéraire qui ressemble à (pseudo code):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Qui achemine toute demande entrante vers votre serveur contenant du texte après votre domaine www.mytinyurl.com vers votre méthode associée, RouteURL. Il fournit le texte qui est passé après la barre oblique dans votre URL à cette méthode.
Alors, disons que vous avez demandé: www.mytinyurl.com/fif
"fif" serait alors passé à votre méthode, RouteURL (String UrlID). RouteURL convertirait alors "fif" en son équivalent base10, 20103, et une requête de base de données sera faite pour rediriger vers n'importe quelle URL stockée sous l'ID 20103 (dans ce cas, www.digg.com). Vous augmenteriez également le nombre de visites pour Digg de un avant de rediriger vers l'URL correcte.
C'est un exemple vraiment simplifié, mais vous devriez pouvoir vous faire une idée générale.