什么是短地址?如何用PHP生成与使用短地址

一、短网址功能介绍
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。
 
二、短网址的好处
* 内容需要,缩短地址
微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了。
 
* 用户友好,便于管理
短网址可以在我们项目里可以很好的对开放级URL进行管理。有一部分网址可以会涵盖暴力,广告等信息,这样我们可以通过用户的举报,完全管理这个连接将不出现在我们的应用中,因为同样的URL通过加密算法之后,得到的地址是一样的。
 
* 访问统计,数据分析
我们可以对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点,这样有利于我们对项目的后续工作更好的作出决策。
 
三、PHP简易短网址功能实现
1、了解短网址实现的原理
 
目前,百度、新浪、suo.im、mrw.so/等大企业都提供了短网址生成功能,这里我们以suo.im提供的为例(官网:http:// suo.im /)来分析其操作:

  • 假设长地址为:https://www.zhihu.com/question/29270034/answer/46446911,将长地址粘贴到suo短地址转换输入框中,并点击缩短地址
\"suo.im短网址\"
 
②得到的http://suo.im/4UntL0的地址即长地址转化而来的短地址短地址访问效果等同于长地址(通过请求跟踪得到下图)

\"短网址链接\"
 
不难看出,在访问短网址之后产生了一个302重定向,定向到了长地址。一个短网址对应一个长地址,在DB层面可以理解成是一个映射关系。由于短地址域名是固定不变的,那么url中的4UntL0就成了识别地址的一个标识了,访问短网址后,短网址服务提供者获取“4UntL0”标识,再去DB中去查询该标识对应的长地址,最后再做重定向。
 
2、短网址标识符生成
由于短网址的识别字符比较短,而识别字符数量从某个角度来看是有限的,采用惯用的hash生成方式在地址数量多的时候发生碰撞的可能性会很大,因此这里我们可以采用参考链接中提及的类似“发号器”的思想。通俗的讲,有点像吃饭时候在前厅取的排队号,转化第一个长地址的时候发号器给1,第二个长地址转化时给2…以此类推。
 
考虑到标识符尽量的要短并且防止重复,此处的标识符我们也可以把大小写字母加进来,并且要区分大小写,这样同样6个字符组成的识别符号可以被用的长地址将远远大于6个纯数字组成的字符。0-9、a-z、A-Z共计62个字符,那么算法我们就可以采用62进制来进行运算。为了方便操作,此处可以将进制互相转化的方法封装成一个函数库文件。
 
3、创建短网址需要的虚拟主机
① 此处以LAMP环境为例,因此需要配置一个Apache虚拟主机:
 
定义站点根目录路径为:H:webrootsubjects80228
定义需要使用的域名为:u.cn
虚拟主机配置文件中具体配置代码参考如下:
配置完成之后重启/启动Apache。
\"短网址\"
② 给域名设置本地Hosts解析
在hosts文件中添加以下一行代码:
127.0.0.1    www.u.cn u.cn
③ 测试访问,验证虚拟主机是否配置成功
 
4、编写长地址转化需要的前端静态页面
 
简单页面(make.html),需要包含一个表单输入框与一个提交按钮,为了用户体验,表单可以通过ajax进行提交,暂定提交地址为同级目录下的make.php