Những người khác đã trả lời cách hoạt động của chuyển hướng nhưng bạn cũng nên biết cách chúng tạo ra các url nhỏ của chúng. Bạn sẽ nghe nhầm rằng họ tạo một hàm băm của URL để tạo mã duy nhất cho URL rút gọn. Điều này không chính xác trong hầu hết các trường hợp, họ không sử dụng thuật toán băm (nơi bạn có thể có xung đột).
Hầu hết các dịch vụ rút ngắn URL phổ biến chỉ cần lấy ID trong cơ sở dữ liệu của URL và sau đó chuyển đổi nó thành Cơ sở 36 [a-z0-9] (không phân biệt chữ hoa chữ thường) hoặc Cơ sở 62 (phân biệt chữ hoa chữ thường).
Một ví dụ đơn giản về Bảng cơ sở dữ liệu 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
Các khung công tác web cho phép định tuyến linh hoạt giúp việc xử lý URL đến thực sự dễ dàng (Ruby, ASP.NET MVC, v.v.).
Vì vậy, trên máy chủ web của bạn, bạn có thể có một hành động định tuyến trông giống như (mã giả):
Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);
Định tuyến bất kỳ yêu cầu nào đến máy chủ của bạn có bất kỳ văn bản nào sau tên miền www.mytinyurl.com của bạn tới phương thức liên kết của bạn, RouteURL. Nó cung cấp văn bản được chuyển vào sau dấu gạch chéo trong URL của bạn cho phương thức đó.
Vì vậy, giả sử bạn đã yêu cầu: www.mytinyurl.com/fif
"Năm mươi" sau đó sẽ được chuyển tới phương thức của bạn, RouteURL (Chuỗi UrlID). Sau đó, RouteURL sẽ chuyển đổi "five" thành base10 tương đương, 20103 và một yêu cầu cơ sở dữ liệu sẽ được thực hiện để chuyển hướng đến bất kỳ URL nào được lưu trữ dưới ID 20103 (trong trường hợp này là www.digg.com). Bạn cũng sẽ tăng số lượt truy cập cho Digg lên một lượt trước khi chuyển hướng đến đúng URL.
Đây là một ví dụ thực sự đơn giản nhưng bạn sẽ có thể có được ý tưởng chung.