说到短网址,那什么是短网址呢?
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。【摘自百度百科】
如何将长网址变成短网址?
很多人有疑问,短网址的存在到底有什么意义呢?这个问题在移动互联网时代还未开始的时候,真的很难回答,但是如今,我相信没有人不知道短网址存在的重要性了。因为很多很多人都在日常生活中能见到短链接。据不完全统计,目前移动流量已经远远超越了PC流量,不得不承认现在是移动互联网的时代。我身边很多朋友告诉我,他们基本上几个月才会用一次电脑,有的甚至一年都没有用过PC电脑。电脑开机率越来越低,是因为随着移动互联网时代的到来,生活中越来越多的问题可以直接用手机解决。甚至出现了很多新的名词:低头族。虽然这种说话带有点贬义,但是非常符合目前的现状。手机已经成了生活照必不可少的物品,但你离开家的时候,都会下意识的摸摸口袋是否带了手机,手机是否有电等等。
移动互联网时代虽然已经到来,移动设备主宰着我们的生活,但是电池技术的局限,很多移动设备的屏幕不可能做的很大。在有限的屏幕内,为了提升用户体验必须要缩短网址,这个时候,短网址就成了不可或缺的重要手段。
它的原理也很简单,使用HTTP 301 Moved状态码重定向,浏览器就会自动的转向到目标网址。这个实现起来的难度不大,代价也不会很高。因为多了这一次转发,这使得那些被传播的网址多了一些可控的因素,比如说可以记录请求的报文,对来源网站、IP、浏览器等许多信息进行收集和统计;可以针对有害网站进行跳转前的过滤和警告。这样子,一个连接投放出去之后的效果就可以很方便的统计。
我们现在直接走代码模拟一下短网址的功能
先建一个数据库,我这里取名为s5ip,再建一张表,我取名为web
CREATE TABLE `web` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`short_website` varchar(50) NOT NULL COMMENT '短网址',
`long_website` varchar(300) NOT NULL COMMENT '原网址',
`times` int(10) unsigned DEFAULT '1' COMMENT '访问次数',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
设置一个虚拟域名,我这里是取名为http://s5ip.cn
index.php代码
短网址案例
原网址:
短网址:
原网址:
短网址:
s5ip.php代码
config.php代码
website.php代码
$url,'new_website' => $host.'/'.$result['short_website']]);
}else{
$short_website = round_str();
$sql = "INSERT INTO web(short_website,long_website) VALUES('$short_website','$url')";
$resource = mysqli_query($conn,$sql);
if($resource){
output('0','转换成功',['old_website' => $url,'new_website' => $host.'/'.$short_website]);
}
}
}else{
output('-1','无效网址');
}
break;
case '1'://还原
$short_website = pathinfo($url)['filename'];
$sql = 'SELECT long_website FROM web WHERE short_website = "'.$short_website.'"';
$resource = mysqli_query($conn,$sql);
$result = [];
while($row = mysqli_fetch_assoc($resource)){
$result = $row;
}
if($result){
output('0','还原成功',['old_website' => $result['long_website'],'new_website' => $url]);
}else{
output('-1','无效短网址');
}
break;
}
function.php代码
$code,
'msg' => $msg,
'data' => $data
]));
}
数据表截图
要先配置服务器,才能访问,我用的是apache服务器,开启url重写功能,在根目录加上该文件
.htaccess
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
现在通过浏览器,地址栏输入http://s5ip.cn/Do03 ,就可以访问http://www.baidu.com了
直接访问百度成功
我们再做进一步改造,做成对外的API接口
1、TXT格式短网址API接口
2、JSON格式短网址API接口
3、JSONP格式短网址API接口
api.php代码
$url,'new_website' => $new_website]);
}elseif(strtolower($format) == 'jsonp'){
echo $callback."(".json_encode(['code' => '0','msg' => '转换成功','new_website' => $new_website]).")";
}else{
echo $new_website;
}
}else{
$short_website = round_str();
$sql = "INSERT INTO web(short_website,long_website) VALUES('$short_website','$url')";
$resource = mysqli_query($conn,$sql);
if($resource){
output('0','转换成功',['old_website' => $url,'new_website' => $host.'/'.$short_website]);
}
}
}else{
output('-1','无效网址');
}
接下来,我们写个测试代码,对短网址API进行调用
test.php
此外,短网址还可以生成对应的二维码。操作方便、快捷、高效!这部分内容,我们后续再写……
不足之处,请多多指教。