URL Shortener如何工作?

pra*_*p19 83 url tinyurl url-shortener

我想知道URL Shortener是如何工作的,比如他们如何从地址栏中提取文本并将其映射到正确的URL,稍后重定向它.他们使用什么编程语言?他们如何保持映射的历史?他们如何确保缩短网址的唯一性?如果不访问URL,非专业人员如何取消映射?

Dan*_*son 36

维基是你的朋友

基本上,名称较短的网站用作占位符,例如bit.ly.

然后,bit.ly生成供用户提供的密钥,该密钥随机生成以不重复.使用35个字符选项和8个左右的值,进行数学运算.这是很多可能的关键.如果一个url等于以前存在的密钥,我记得在某个地方读过他们也重用了密钥.

他们并没有真正使用特定的编程语言,他们只使用简单的URL重定向,我相信可以用HTML完成.

  • 重定向不是用HTML完成的,而是用HTTP标头完成的.(状态代码301或302,取决于). (21认同)

Chr*_*ald 24

URL缩短器只生成一个短代码,将目标URL映射到短代码,并提供一个新的URL.访问URL将使用短代码作为密钥执行数据库查找,并将您重定向到目标URL.缩短的URL和目标URL之间没有算法关联,因此如果不通过URL缩短器的系统,则无法"取消映射"它.

您可以使用任何编程语言和数据存储来完成.代码生成对于确保唯一性也是微不足道的; 如果你有一个递增的主整数键,你可以简单地将键编码为base62并提供.由于代码本质上是递增的,因此您永远不会发生冲突.


The*_*eLQ 19

实际上这个过程非常简单:有一个脚本要求URL,生成一个随机字符串(并验证该字符串尚未使用),并将两者放在某种数据库中.当您请求URL时,另一个脚本会在数据库中查找随机字符串,如果找到它会将您重定向到该站点.

由于滥用预防,URL过滤,垃圾邮件防护,URL验证等所需的功能,这在生产中当然更复杂.但这些实现起来非常简单.


语言无关紧要,大多数人都会这样做.

  • "并验证此字符串尚未使用"..怎么样?这是最大的问题 (9认同)
  • @Stewie:SELECT*FROM mappings WHERE key = stringToCheck,并检查是否有任何行返回?或者您选择的数据库语言中的任何类似的东西.诚然,这似乎是整个问题中最简单的部分. (3认同)