短链接,顾名思义就是在形式上比较短的链接。最早存在于微博(如新浪微博,t.cn,url.cn)分享网址中。比如这样的:t.cn/Aidjddvo
短链接的好处
内容需要(比如短信,微博中链接字数的限制);便于管理(方便后台跟踪点击量,便于统计);用户友好(看起来很Cool,提升用户体验)大致思路是定义一个URL映射算法,将长的URL映射到短的URL,使用数据库或缓存文件存储映射关系,实现映射算法。其中关键部分在于映射算法,接下来我们就详细说下映射算法。
映射算法
function shorturl($url) {
$x = sprintf('%u', crc32($url));
$str = '';
while($x > 0) {
$s = $x % 62;
if($s > 35) {
$s = chr($s + 61);
} elseif ($s > 9 && $s <= 35) {
$s = chr($s + 55);
}
$str .= $s;
$x = floor($x/62);
}
return $str;
}
专属中转服务器
如果自己想搭建一个类似于http://url.cn的短链接生成服务器,需要将所有请求重写到处理脚本:
RewriteEngineOn
RewriteBase/
RewriteRule. index.php
短链接存储方案
因为存储后端实现方式不一,主要思路是将生成的短链接标识存储到数据库:
$url ='https://www.kunquer.com';
$key = shorturl($url);
insert into url(`key`, url) values($key, $url);// 插入到数据库
查询思路如下:
$uri = trim($_SERVER['REQUEST_URI'],'/');// 短链接标识
$data =select*from url where`key`= $uri // 从数据库中读取结果header('Location: '.$data->url);// 重定向到真实链接
以上。