Другие ответили, как работают перенаправления, но вы также должны знать, как они генерируют свои крошечные URL-адреса. Вы ошибочно услышите, что они создают хэш URL-адреса, чтобы сгенерировать этот уникальный код для сокращенного URL-адреса. В большинстве случаев это неверно, они не используют алгоритм хеширования (где потенциально могут возникнуть коллизии).
Большинство популярных сервисов сокращения URL-адресов просто берут идентификатор из базы данных URL-адреса и затем преобразуют его в Base 36 [a-z0-9] (без учета регистра) или Base 62 (с учетом регистра).
Упрощенный пример таблицы базы данных 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
Веб-платформы, которые позволяют гибкую маршрутизацию, действительно упрощают обработку входящего URL-адреса (Ruby, ASP.NET MVC и т. Д.).
Итак, на вашем веб-сервере у вас может быть действие маршрута, которое выглядит (псевдокод):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Которая направляет любой входящий запрос на ваш сервер, который имеет любой текст после вашего домена www.mytinyurl.com, на связанный с ним метод RouteURL. Он предоставляет этому методу текст, который передается после косой черты в вашем URL-адресе.
Итак, допустим, вы запросили: www.mytinyurl.com/fif
Затем "fif" будет передан вашему методу RouteURL (String UrlID). RouteURL затем преобразует «fif» в его эквивалент base10, 20103, и будет сделан запрос к базе данных для перенаправления на любой URL-адрес, хранящийся под идентификатором 20103 (в данном случае www.digg.com). Вы также должны увеличить количество посещений Digg на единицу перед перенаправлением на правильный URL.
Это действительно упрощенный пример, но вы сможете получить общее представление.