Otros han respondido cómo funcionan los redireccionamientos pero también debes saber cómo generan sus diminutas URL. Oirá por error que crean un hash de la URL para generar ese código único para la URL abreviada. Esto es incorrecto en la mayoría de los casos, no están usando un algoritmo hash (donde podría haber colisiones).
La mayoría de los servicios populares de acortamiento de URL simplemente toman la ID en la base de datos de la URL y luego la convierten a Base 36 [a-z0-9] (no distingue entre mayúsculas y minúsculas) o Base 62 (distingue entre mayúsculas y minúsculas).
Un ejemplo simplificado de una tabla de base de datos 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
Los Web Frameworks que permiten un enrutamiento flexible hacen que el manejo de la URL entrante sea realmente fácil (Ruby, ASP.NET MVC, etc.).
Entonces, en su servidor web, puede tener una acción de ruta que se parece a (pseudocódigo):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Que enruta cualquier solicitud entrante a su servidor que tenga algún texto después de su dominio www.mytinyurl.com a su método asociado, RouteURL. Proporciona el texto que se pasa después de la barra diagonal en su URL a ese método.
Entonces, digamos que lo solicitó: www.mytinyurl.com/fif
A continuación, se pasará "quince" a su método, RouteURL (String UrlID). RouteURL luego convertiría "quince" a su equivalente base10, 20103, y se realizará una solicitud de base de datos para redirigir a cualquier URL almacenada con el ID 20103 (en este caso, www.digg.com). También aumentaría el recuento de visitas para Digg en uno antes de redirigir a la URL correcta.
Este es un ejemplo realmente simplificado, pero debería poder hacerse una idea general.