今天突然对新浪微博的短网址很感兴趣,长长的一段url,发布以后被替换为了类似 http://t.cn/xxx 的毛玩意儿!
当然了,人家新浪微博一个小小的发布框,本来就有发布字数的限制,如果空间都被一个url给占了,着实吭爹啊!所以,人家把长网址替换为短网址,是明智之举。
类似的还有人人(http://rrurl.cn/xxx),腾讯微薄等等。。。
我感兴趣的不是它做了一个replace操作,而是短网址点击后,还原到长网址的实现!其实仔细想了下,老简单了,最基本的实现原理:
1、利用长网址,生成一个唯一串:xxxxxx
2、新的短网址为:“我的域名” + "唯一串",如:http://baidufe.com/u/xxxxxx
3、当访问 http://baidufe.com/u/xxxxxx 的时候,实际进入 /u 这个Action
4、在 /u 的Action内部获取xxxxxx,然后反解出长网址(可以利用数据库)
5、302跳转到长网址
就这么地,我也搞了一个,勉强能用:http://www.baidufe.com/createshorturl
如上图,长网址为:http://hi.baidu.com/zxlien/item/8fddf55bb1280629e6c4a5a7
转换后,短网址为:http://baidufe.com/u/WXDCiC
再来试一个长一点的url:
短网址:http://baidufe.com/u/mKf8Tb
我这里只是模拟实现短网址,还没有真正意义实现最短!因为我的短网址里,还包含了 /u 这一层,如果要想实现最短,需要去掉这一层,另外还可以像新浪那样搞一个t.cn的域名,或者人人那样,搞一个rrurl.cn的域名,专门用来做短网址服务。