다른 사람들은 리디렉션의 작동 방식에 대해 대답했지만 작은 URL을 생성하는 방법도 알아야합니다. 단축 된 URL에 대한 고유 코드를 생성하기 위해 URL의 해시를 생성한다는 실수를 듣게됩니다. 이는 대부분의 경우 올바르지 않으며 해싱 알고리즘을 사용하지 않습니다 (충돌 가능성이있는 경우).
대부분의 인기있는 URL 단축 서비스는 URL 데이터베이스에서 ID를 가져 와서 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으로 변환하고 데이터베이스 요청이 ID 20103 (이 경우 www.digg.com)에 저장된 URL로 리디렉션되도록합니다. 또한 올바른 URL로 리디렉션하기 전에 Digg의 방문 횟수를 1 씩 늘립니다.
이것은 매우 간단한 예이지만 일반적인 아이디어를 얻을 수 있어야합니다.