Andere haben geantwortet, wie die Weiterleitungen funktionieren, aber Sie sollten auch wissen, wie sie ihre winzigen URLs generieren. Sie werden fälschlicherweise hören, dass sie einen Hash der URL erstellen, um diesen eindeutigen Code für die verkürzte URL zu generieren. Dies ist in den meisten Fällen falsch. Sie verwenden keinen Hashing-Algorithmus (bei dem möglicherweise Kollisionen auftreten können).
Die meisten gängigen URL-Verkürzungsdienste nehmen einfach die ID in die Datenbank der URL und konvertieren sie dann entweder in Base 36 [a-z0-9] (ohne Berücksichtigung der Groß- und Kleinschreibung) oder in Base 62 (ohne Berücksichtigung der Groß- und Kleinschreibung).
Ein vereinfachtes Beispiel für eine TinyURL-Datenbanktabelle:
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
Web Frameworks, die flexibles Routing ermöglichen, erleichtern die Handhabung der eingehenden URLs (Ruby, ASP.NET MVC usw.).
Auf Ihrem Webserver haben Sie möglicherweise eine Routenaktion, die wie folgt aussieht (Pseudocode):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Welche leitet eine eingehende Anfrage an Ihren Server weiter, der Text nach Ihrer Domain www.mytinyurl.com enthält, an Ihre zugeordnete Methode RouteURL. Es liefert den Text, der nach dem Schrägstrich in Ihrer URL an diese Methode übergeben wird.
Angenommen, Sie haben Folgendes angefordert: www.mytinyurl.com/fif
"fif" wird dann an Ihre Methode RouteURL (String UrlID) übergeben. RouteURL konvertiert dann "fif" in sein base10-Äquivalent 20103, und es wird eine Datenbankanforderung gestellt, um zu einer beliebigen URL umzuleiten, die unter der ID 20103 gespeichert ist (in diesem Fall www.digg.com). Sie würden auch die Anzahl der Besuche für Digg um eins erhöhen, bevor Sie zur richtigen URL umleiten.
Dies ist ein wirklich vereinfachtes Beispiel, aber Sie sollten in der Lage sein, sich einen Überblick zu verschaffen.